find . -type d
いくつかの開始点の下にあるすべてのディレクトリを見つけるために使用できます。ただし、現在のディレクトリ(.
)も返されるため、望ましくない場合があります。どうすれば除外できますか?
find . ! -path . -type d
この特定のケース(.
)の場合、ゴルフはmindepth
ソリューション(24対26文字)よりも優れていますが、!
のために入力するのはおそらく少し難しいでしょう。
他のディレクトリを除外するために、これはあまり良くなく、DRYnessの変数が必要です:
D="long_name"
find "$D" ! -path "$D" -type d
!
と-mindepth
間の決定ツリー:
!
を使用します。.
を除外しますか?コインを投げます。long_name
を除外しますか? -mindepth
を使用します。find
の再帰の深さは-maxdepth
パラメーターで制御できるだけでなく、対応する-mindepth
パラメーターを使用して深さを「上」から制限することもできます。したがって、実際に必要なものは次のとおりです。
find . -mindepth 1 -type d
最初のレベルのドットファイルを無視してもかまわないときはfind ./* <...>
を使用します(bashでは*
globはデフォルトではこれらと一致しません-shoptビルトインの 'dotglob'オプションを参照してください: https://www.gnu.org/software/bash/manual/html_node/The-Shopt-Builtin.html )。
Eclipse tmp#find。 。 ./ screen ./ screen/.testfile2 ./。X11-unix ./。ICE-unix ./ tmux-0 ./ tmux-0/default
Eclipse tmp#find ./* ./screen ./screen/.testfile2 ./tmux-0 ./tmux- 0/default
まあ、簡単な回避策もあります(Windows git bashでは解決策がうまくいきませんでした)
find * -type d
パフォーマンスはそれほど高くないかもしれませんが、仕事を終わらせます。
[編集]:@AlexanderMillsがコメントしたように、ルートの場所に隠しディレクトリ(例:./.hidden
)は表示されませんが、隠しサブディレクトリ(例:./folder/.hiddenSub
)は表示されません。 [Windowsでのgit bashによるテスト]