Je peux trouver les sous-répertoires d'un répertoire en
ls -d -- */
ou
ls -l | grep "^d"
mais les deux semblent indirects, et j'imagine qu'il y aurait un moyen standard de trouver uniquement les répertoires. Existe-t-il une bonne façon de procéder? Et si ce n'est pas le cas, est-ce que l'un ou l'autre entraînera un comportement indésirable sur les cas marginaux? (Liens symboliques, répertoires cachés, etc.)
la source
find . -maxdepth 1 -type d
pour que cela fonctionne sur OS X Yosemite.find . -maxdepth 1 -mindepth 1 -type d
. Sinon, le répertoire actuel.
sera inclus.Pour votre information - Dans ZSH (mais pas BASH), vous pouvez aussi le faire:
ls -d -- *(/)
; le(/)
modificateur indique ZSH uniquement aux répertoires glob.Cela dit, ce n'est pas très différent de votre propre solution proposée (
ls -d -- */
), et c'est loin d'être standard.En ce qui concerne la sortie de
ls
(qui diffère probablement en fonction des autres drapeaux):la source
*(/)
développe dans les répertoires non cachés tandis que se*/
développe dans les répertoires non cachés ou les liens symboliques vers les répertoires (ou du moins les liens symboliques vers des chemins pour lesquels nous pouvons dire qu'ils sont des répertoires).