標準ツールを使用して実行する場合は、次のパイプラインが機能するはずです:
find . -type d | perl -lne 'print tr:/::, " $_"' | sort -n | cut -d' ' -f2
つまり、
<オール>検索される深さを制限するには、検索コマンドに -maxdepth 引数を追加します。
find 出力と同じ順序でディレクトリをリストしたい場合は、「sort -n」の代わりに「sort -n -s」を使用します。 「-s」フラグは、並べ替えを安定させます (つまり、同等に比較される項目間で入力順序を保持します)。
find
コマンドは -printf
をサポートします 多くのプレースホルダーを認識するオプション。
そのようなプレースホルダーの 1 つが %d
です。 find
を基準にして、指定されたパスの深さをレンダリングします 開始しました。
したがって、次の簡単なワンライナーを使用できます:
find -type d -printf '%d\t%P\n' | sort -r -nk1 | cut -f2-
これは非常に簡単で、perl
のような重いツールに依存しません。 .
仕組み:
- ファイルのリストを内部的に生成し、それぞれが 2 フィールド行としてレンダリングされます
- 最初のフィールドには、(逆の) 数値ソートに使用される深さが含まれ、次に切り取られます
- その結果、1 行に 1 ファイル、深いものから順に単純なファイル リストが表示されます