Una solución de bash pura:
shopt -s nullglob
dirs=( /path/to/directory/*/ )
echo "There are ${#dirs[@]} (non-hidden) directories"
Si también desea contar los directorios ocultos:
shopt -s nullglob dotglob
dirs=( /path/to/directory/*/ )
echo "There are ${#dirs[@]} directories (including hidden ones)"
Tenga en cuenta que esto también contará los enlaces a directorios. Si no quieres eso, es un poco más difícil con este método.
Usando find
:
find /path/to/directory -type d \! -name . -prune -exec printf x \; | wc -c
El truco consiste en generar una salida x
estándar cada vez que se encuentra un directorio, y luego usarlo wc
para contar el número de caracteres. Esto contará el número de todos los directorios (incluidos los ocultos), excluidos los enlaces.
Los métodos presentados aquí son seguros para los personajes divertidos que pueden aparecer en los nombres de los archivos (espacios, nuevas líneas, caracteres globales, etc.).