他のファイルではなくディレクトリを指すシンボリックリンクのみを見つけるエレガントな方法はありますか?

他のファイルではなくディレクトリを指すシンボリックリンクのみを見つけるエレガントな方法はありますか?

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' _ {} +

おすすめ記事