find -type l
シンボリックリンクを表示しますが、ディレクトリをls -l | grep '^l'
指すシンボリックリンクとファイルを指すシンボリックリンクを区別しません。これは非常に不器用な方法ですが、find -type l -exec file -L '{}' ';' | grep directory
非常に非効率的です。
ディレクトリへのシンボリックリンクのみを見つけるより良い方法はありますか?
ベストアンサー1
~によるとPOSIX仕様test
、-d
テストは次のとおりです。
もし本当だパス名ディレクトリの既存のディレクトリエントリを確認します。
したがって、シンボリックリンクがある場合は[ -d ... ]
それを使用できます。
find . -type l -exec test -d {} \; -print
または、各リンクに対して外部コマンドを実行しないでください。
find . -type l -exec sh -c 'for l; do [ -d "$l" ] && printf "%s\n" "$l"; done' _ {} +