![특수 대상이 있는 모든 심볼릭 링크를 제거하는 방법은 무엇입니까?](https://linux55.com/image/48534/%ED%8A%B9%EC%88%98%20%EB%8C%80%EC%83%81%EC%9D%B4%20%EC%9E%88%EB%8A%94%20%EB%AA%A8%EB%93%A0%20%EC%8B%AC%EB%B3%BC%EB%A6%AD%20%EB%A7%81%ED%81%AC%EB%A5%BC%20%EC%A0%9C%EA%B1%B0%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
사용 명령:
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/
답변1
꼭 읽어주세요대체 답변. 게다가 투표율은 아직 그렇게 높지 않지만요.
이를 사용하여 모든 심볼릭 링크를 제거할 수 있습니다.
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
답변2
최신 find
지원 -lname
:
find /usr/local/bin -lname '/usr/local/texlive/*' -delete
그것은 이루어져야합니다.
답변3
해결책은 find
훌륭합니다.
귀하의 검색 결과가 이를 지원하지 않는 경우를 대비 -lname
하여 셸과 readlink
.
cd /usr/local/bin
for f in *; do
case "$(readlink "$f")" in /usr/local/texlive/*)
rm "$f"
;;
esac
done
답변4
경로로 이동하여 자신만의 경로 구성을 설정하세요.
ls -alh|grep "your-pattern-to-file-or-folder-for-symlink"| awk '{print $9}'|xargs rm -rf