有効なディレクトリへのすべてのシンボリックリンクを一覧表示するには、 find を使用します。

有効なディレクトリへのすべてのシンボリックリンクを一覧表示するには、 find を使用します。

私は利用できる

find /search/location -type l

内部のすべてのシンボリックリンクのリスト/検索/場所

有効なディレクトリを参照するシンボリックリンクに出力を制限し、壊れたfindシンボリックリンクとファイルリンクを除外するにはどうすればよいですか?

答え1

GNU findの使用(非埋め込みLinuxおよびCygwinで実装):

find /search/location -type l -xtype d

基本機能のない検索実装では、-xtype2つの呼び出しを使用できます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

関連情報