다음 예를 들어 설명하는 것이 가장 좋다고 생각합니다.
lrwxrwxrwx 1 root root 21 Mar 31 08:44 awk -> /etc/alternatives/awk*
-rwxr-xr-x 1 root root 45K Apr 8 2015 b43-fwcutter*
lrwxrwxrwx 1 root root 35 Apr 1 21:42 backup-config -> /home/myuser/scripts/backup-config.sh
lrwxrwxrwx 1 root root 37 Apr 1 21:42 backup-to-server -> /home/myuser/scripts/backup-to-server.sh
/home/myuser/scripts 내의 파일을 가리키는 모든 심볼릭 링크를 제거하고 싶습니다.
이 예에서는. 백업 구성을 삭제하고 서버에 백업하고 싶습니다.
감사해요!
PS 삭제하고 싶은 폴더에 다른 심볼릭 링크가 있는데 백업에 있는 것이 아니어서 패턴을 실제로 사용할 수는 없습니다.
답변1
파일을 반복하고 기호 링크를 패턴과 일치시킵니다. 이는 절대 경로가 있는 직접 링크에 대해 작동합니다( ../../something
여러 심볼릭 링크를 건너뛰거나 건너뛰는 등의 작업은 아님).
for f in * ; do
[ -L "$f" ] || continue; # skip anything but symlinks
l=$(readlink "$f") # read the link contents
case "$l" in
/home/myuser/scripts/*) echo rm "$f" ;; # match against a pattern
esac
done