Existen varias formas. Aquí hay algo que es muy rápido:
find /your/dir -type d -print0 | xargs -0 echo
Esto escaneará/tu/dir para directorios de forma recursiva y pasará todos los caminos para el comando "echo" (cambio de su necesidad). Puede invocar echo varias veces, pero intentará pasar tantos nombres de directorio como la consola permita a la vez. Esto es extremadamente rápido porque es necesario iniciar pocos procesos. Pero solo funciona en programas que pueden tomar una cantidad arbitraria de valores como opciones. -print0 dice a encontrar rutas de archivos separados usando un byte cero (y -0 dice xargs para leer argumentos separados por cero bytes) Si usted no tiene la posterior, se puede hacer esto:
find /your/dir -type d -print0 | xargs -0 -n 1 echo
o
find /your/dir -type d -print0 --exec echo '{}' ';'
La opción -n le dirá a xargs que no pase más argumentos que uno al mismo tiempo a su programa. Si no desea buscar para buscar recursivamente, puede especificar la opción de profundidad para deshabilitar la recursión (sin embargo, no sé la sintaxis de memoria).
Aunque si eso es útil en su script particular es otra pregunta ;-).
esto lo hace, pero ¿por qué? */es un comodín para todos los directorios? – jakev
Guau, eso realmente funciona, incluso en directorios con espacios. Entonces, ¿bash debe citar implícitamente los valores cuando expande el comodín? Lo amo. – harpo
@JakeVA: Sí, exactamente. Tenga en cuenta que no incluirá directorios ocultos a menos que configure 'shopt -s dotglob'. Si el directorio actual puede no tener subdirectorios, también debe establecer 'shopt -s nullglob' (configúrelo por si acaso). –