Puedo encontrar los subdirectorios de un directorio por
ls -d -- */
o
ls -l | grep "^d"
pero ambos parecen indirectos, y me imagino que habría una forma estándar de encontrar solo los directorios. ¿Hay una manera correcta de hacer esto? Y si no, ¿alguno de estos conducirá a un comportamiento indeseable en casos extremos? (Enlaces simbólicos, directorios ocultos, etc.)
fuente
find . -maxdepth 1 -type d
para que esto funcione en OS X Yosemite.find . -maxdepth 1 -mindepth 1 -type d
. De lo contrario, se.
incluirá el directorio actual .FYI - En ZSH (pero no BASH), también se puede hacer esto:
ls -d -- *(/)
; el(/)
modificador le dice a ZSH solo que glob directoriosDicho esto, no es muy diferente de su propia solución propuesta (
ls -d -- */
), y está lejos de ser estándar.En cuanto a la salida de
ls
(que probablemente difiere en función de otras banderas):fuente
*(/)
expande a los directorios no ocultos, mientras que se*/
expande a directorios no ocultos o enlaces simbólicos a directorios (o al menos enlaces simbólicos a rutas para las que podemos decir que son directorios).