使用コマンド:
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