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