回答:
組み込みの検索機能はなく、GNU findさえありません。出力を後処理して、find
たとえばPerlを使用して、スラッシュの数でソートできます。
find ... | perl -e 'print sort {$a=~s!/!/! <=> $b=~s!/!/!} <>'
<>
すべての入力行のリストです。$a =~ s!/!/!g
は、$a
ソート基準として使用するのスラッシュの数です。zshを使用できる場合:
echo **/*(oe\''REPLY=${REPLY//[^\/]}'\')
**/*
現在のディレクトリとサブディレクトリ内のすべてのファイルをリストします。oe
は、一致が返される順序を制御しREPLY
ます。ここではREPLY
、一致するパスに最初に設定された各一致の引用符でコードを実行した後の値で並べ替えられます。$REPLY
、スラッシュ以外のすべてを削除するように変換します。したがって、結果は深さ1(空の結果$REPLY
)のすべてで構成され、次に深さ2(最終的$REPLY
には/
)、深さ3(//
)などのすべてで構成されます。私の気持ちはあなたができるということです。これにはgrepなどとループが含まれますが、特に、検索を完了する必要がないというケースについては、非常にうまく機能することがわかります。
次の理由により、より多くのリソースを消費します。
これは、次の理由により優れています。
#!/ bin / bash 深さ= 0 find -mindepth $ depth -maxdepth $ depth | grep '。' 行う depth = $((depth + 1)) やった
また、簡単に公平に(?)1行に収めることができます。
depth=0; while find -mindepth $depth -maxdepth $depth | grep --color=never '.'; do depth=$((depth + 1)); done
しかし、私は入力よりも小さなスクリプトを好む...