특수 대상이있는 모든 심볼릭 링크를 제거하려면 어떻게해야합니까? 다음과 같습니다. 내 디렉토리 usr/local/bin에는 다음과 같은 항목이

다음 명령으로

ls -la *

모든 심볼릭 링크를 나열 할 수 있습니다.

특수 폴더에 연결된 모든 심볼릭 링크를 제거하려면 어떻게해야합니까?

예를 들면 다음과 같습니다.

내 디렉토리 usr/local/bin에는 다음과 같은 항목이 있습니다.

lrwxrwxrwx 1 root root 50 Apr 22 14:52 allneeded -> /usr/local/texlive/2011/bin/x86_64-linux/allneeded
lrwxrwxrwx 1 root root 47 Apr 22 14:52 amstex -> /usr/local/texlive/2011/bin/x86_64-linux/amstex
lrwxrwxrwx 1 root root 24 Apr 23 19:09 arara -> /home/marco/.arara/arara

이제 경로가있는 모든 링크를 제거하고 싶습니다. /usr/local/texlive/



답변

대체 답변 을 읽으 십시오 . 이 시점에서 최고로 투표하지는 않았지만 훨씬 더 중요합니다.

이를 사용하여 모든 심볼릭 링크를 삭제할 수 있습니다.

find -type l -delete

최신 find버전으로.

이전 버전의 찾기 버전에서는 다음과 같아야합니다.

find -type l -exec rm {} \;
# or
find -type l -exec unlink {} \;

줄 바꿈 문자가 포함 된 경로가 없다고 가정하고 특정 링크 대상으로 제한하려면 다음을 수행하십시오.

 find -type l | while IFS= read -r lnkname; do if [ "$(readlink '$lnkname')" == "/your/exact/path" ]; then rm -- "$lnkname"; fi; done

또는 좋은 형식

 find -type l |
 while IFS= read -r lnkname;
 do
   if [ "$(readlink '$lnkname')" = "/your/exact/path" ];
   then
     rm -- "$lnkname"
   fi
 done

if물론 또한과 패턴 매칭 등의보다 복잡한 조건을 포함 할 수있다 grep.


귀하의 경우에 적합 :

find -type l | while IFS= read -r lnk; do if (readlink "$lnk" | grep -q '^/usr/local/texlive/'); then rm "$lnk"; fi; done

또는 좋은 형식 :

find -type l | while IFS= read -r lnk
do
  if readlink "$lnk" | grep -q '^/usr/local/texlive/'
  then
    rm "$lnk"
  fi
done

답변

현대 find를 지원합니다 -lname:

find /usr/local/bin -lname '/usr/local/texlive/*' -delete

해야합니다.


답변

find솔루션은 중대하다.

find가 지원하지 않는 경우 -lname를 위해 shell과을 사용하는 다른 방법이 readlink있습니다.

cd /usr/local/bin
for f in *; do
  case "$(readlink "$f")" in /usr/local/texlive/*)
    rm "$f"
    ;;
  esac
done

답변

zsh:

rm -f /usr/local/bin(@e'{[[ $REPLY:P = /usr/local/texlive/* ]]}')

$REPLY:P완전히 그래서 가정, 심볼릭 링크가없는 하나의 경로를 해결하는 것은 /usr/local/texlive, 그것은 심볼릭 링크 해상도 라이브에서 후 모든 파일을 제거하는 것 자체를 무료로 심볼릭 링크 /usr/local/textlive에 대한 링크가 포함됩니다 /usr/local/texlive/foo뿐만 아니라에 ../texlive/bar나에게 /usr/./local/texlive/whatever나에 대한 /some/other/symlink자체 가리키는 심볼릭 링크 인 /usr/local/texlive등 .


답변

경로로 이동하여 경로 구성을 설정하십시오.

ls -alh|grep "your-pattern-to-file-or-folder-for-symlink"| awk '{print $9}'|xargs rm -rf