
私は利用できる
find /search/location -type l
内部のすべてのシンボリックリンクのリスト/検索/場所。
有効なディレクトリを参照するシンボリックリンクに出力を制限し、壊れたfind
シンボリックリンクとファイルリンクを除外するにはどうすればよいですか?
答え1
GNU findの使用(非埋め込みLinuxおよびCygwinで実装):
find /search/location -type l -xtype d
基本機能のない検索実装では、-xtype
2つの呼び出しを使用できますfind
。 1 つはシンボリックリンクをフィルタリングし、もう 1 つはディレクトリへのリンクをフィルタリングします。
find /search/location -type l -exec sh -c 'find -L "$@" -type d -print' _ {} +
または、次のようにプログラムを呼び出すこともできますtest
。
find /search/location -type l -exec test {} \; -print
または、zshがある場合は2つだけです。グローバル予選(@
=はシンボリックリンク、-
=次の修飾子はリンク先に適用され、=/
はディレクトリです):
print -lr /search/location/**/*(@-/)
答え2
努力する:
find /search/location -type l -exec test -e {} \; -print
からman test
:
-e FILE FILE exists
また、恩恵を受けることができます壊れたシンボリックリンクを見つける方法へのU&Lの答え;コメントも必ずお読みください。
編集する:test -d
「FILEが存在するのか、ディレクトリなのか」を確認してください。
find /search/location -type l -exec test -d {} \; -print
答え3
ここにあります:
for i in $(find /search/location -type l); do
test -d $(readlink $i) && echo $i
done