現在のディレクトリのサブディレクトリを一覧表示する正しい方法はありますか?

現在のディレクトリのサブディレクトリを一覧表示する正しい方法はありますか?

以下では、ディレクトリのサブディレクトリを見つけることができます。

ls -d -- */

または

ls -l | grep "^d"

しかし、どちらも間接的なようです。ディレクトリを見つける標準的な方法があると思います。正しい方法がありますか?そうでない場合、これらのうちの1つが極端な場合に誤動作につながる可能性がありますか? (シンボリックリンク、隠しディレクトリなど)

答え1

答えはあなたの意図に依存します~と一緒にあなたが探しているものの代わりに出力します。視覚的な参照のために端末でリストを見たい場合は、最初の解決策は実際にはかなり良いです。出力を処理するには、他の方法を使用することを検討する必要があります。

他のプログラムにリストを入力する最も安定した方法の1つはを使用することですfind

find -maxdepth 1 -type d

これがフィードにとって良い理由は、ヌルでfind区切られたデータを出力するために使用できるか、または-print0適切にエスケープされた文字列を他のプログラムの引数として使用するために使用できるためです-exec。これがlsの出力を解析するよりも良い理由については、以下を参照してください。LS分析Gregのウィキペディアで。

答え2

注 - ZSH(BASHではない)では、次のこともできますls -d -- *(/)(/)修飾子グローバルディレクトリのみを使用するようにZSHに指示します。

つまり、自分が提案したソリューション( )と大きく変わらず、ls -d -- */標準とも距離が離れています。

出力は次のようになりますls(他のフラグによって異なる場合があります)。

% ls
dir0 dir1 dir2 file0 file1 file2
% ls -d -- */
dir0/ dir1/ dir2/
% ls -d -- *(/)
dir0 dir1 dir2

関連情報