다음 명령으로
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