Wildcards
如何刪除具有特殊目標的所有符號連結?
使用命令:
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 版本上,它可能必須是:
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