find . -type d
peut être utilisé pour trouver tous les répertoires ci-dessous un point de départ. Mais il renvoie également le répertoire en cours (.
), ce qui peut être indésirable. Comment peut-il être exclu?
find . ! -path . -type d
Pour ce cas particulier (.
), les golfs sont meilleurs que la solution mindepth
(24 vs 26 caractères), bien que cela soit probablement un peu plus difficile à taper à cause du !
.
Pour exclure d’autres répertoires, le golf sera moins efficace et nécessitera une variable pour DRYness:
D="long_name"
find "$D" ! -path "$D" -type d
Mon arbre de décision entre !
et -mindepth
:
!
pour la portabilité..
? Jeter une pièce.long_name
? Utilisez -mindepth
.Non seulement la profondeur de récursivité de find
peut être contrôlée par le paramètre -maxdepth
, mais elle peut également être limitée à partir du début en utilisant le paramètre -mindepth
correspondant. Donc, ce dont on a réellement besoin, c'est:
find . -mindepth 1 -type d
J'utilise find ./* <...>
quand ignorer les fichiers dot de premier niveau ne me dérange pas (le *
glob ne correspond pas à ceux-ci par défaut sous bash - voir l'option 'dotglob' dans la commande shopt intégrée: 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
Eh bien, une solution de contournement simple également (la solution ne fonctionnait pas pour moi sur git bash)
find * -type d
Ce n'est peut-être pas très performant, mais le travail est fait et c'est ce dont nous avons parfois besoin.