2011-01-20 20 views

Respuesta

5

Si solo necesita obtener una lista de subdirectorios (sin importar el idioma/herramienta que debe usar) find es el comando que necesita.

Puede encontrar cualquier cosa en un árbol de directorios.

Si por inmediata quiere decir que usted necesita solamente los directorios secundarios, pero no la opción nieto -maxdepth va a hacer el truco. Entonces -type le permitirá especificar que sólo se busca directorios:

find YOUR_DIRECTORY -type d -maxdepth 1 -mindepth 1 
+0

Esta solución no es correcta: el resultado incluye el directorio principal 'YOUR_DIRECTORY'. – oberlies

+0

@oberlies: OP no especificó que solo quería el nombre de los directorios sin la ruta relativa. Para muchos (¿la mayoría?) Propósitos './Dir' y' dir' son exactamente iguales. – peoro

+0

El comando propuesto da como resultado la siguiente lista: 'YOUR_DIRECTORY YOUR_DIRECTORY/subdir01 YOUR_DIRECTORY/subdir02 YOUR_DIRECTORY/...', por lo que la primera entrada de la lista no es correcta. – oberlies

11

Uso ls -d */.

Explicación:

  • -d hará ls imprimir los nombres de directorio en lugar de su contenido.
  • La barra oblicua garantiza que solo se consideren los directorios, no los archivos.
-1

Usar este

ls | grep/$

grep encuentra algo que termina en/qué directorios hacen.

+1

Esta no es una solución general. Supone que 'ls' tiene un alias de' ls -F'. – oberlies

1

También puede utilizar el siguiente -

$ ls -l | grep '^d' 

Breve explicación: como en el Listado de largo, los directorios comienzan con 'd', por lo que el comando anterior (grep) filtra los resultados, que comienzan con ' d ', que no son más que directorios.

Cuestiones relacionadas