2011-02-07 9 views
21

Tengo muchos subdirectorios que contienen datos, y quiero una breve lista de los trabajos (subdirectorios) que tengo. No estoy contento con el siguiente comando.¿Cómo `ls` solo tiene un nivel de profundidad?

$ ls H2* 
H2a: 
energy.dat overlap.dat 
norm.dat zdip.dat ... 
(much more) 
H2b: 
energy.dat overlap.dat 
norm.dat zdip.dat ... 
(much more) 

Este desorden innecesario derrota el propósito del comodín (limitando la salida). ¿Cómo puedo limitar la producción a un nivel de profundidad? Me gustaría ver la siguiente salida

H2a/ H2b/ H2z/ 

Gracias por su ayuda, Nick

Respuesta

34

Prueba este

ls -d H2*/ 

La opción -d se supone que es una lista de "directorios única", sino por en sí mismo solo enumera

. 

which I personall y encuentras algo extraño. El comodín es necesario para obtener una lista real de directorios.

ACTUALIZACIÓN: Como @Philipp señala, puede hacerlo aún más concisa y sin salir de fiesta diciendo

echo H2*/ 

La diferencia es que ls se imprimirán los elementos en líneas separadas, que a menudo útil para canalizar a otras funciones.

+3

Si midirectorio es el nombre de un directorio y ejecuta 'ls midirectorio', ls muestra el contenido de midirectorio. Si ejecuta 'ls -d mydir', entonces ls muestra listas mydir sin mostrar su contenido. Ahora bien, si no se proporciona ningún directorio o comodín, entonces ls opera en '.' (es decir, el directorio actual) de forma predeterminada. Entonces 'ls -d' es equivalente a 'ls -d.', Que debería aparecer como '.' sin mostrar su contenido Espero que aclare un poco por qué se requiere un nombre de directorio o un comodín. –

+0

@Mansoor, gracias por la explicación, tiene sentido. – harpo

+0

La opción -d es superior a la solución de eco cuando se desea combinar con p. Ej. -l para una lista larga, para ver los permisos de la carpeta. ¡Muchas gracias! –

10
echo H2* 

Es Bash que hace la expansión, por lo que ni siquiera necesita ls.

En caso de tener ambos archivos y directorios a partir de H2, puede añadir una barra de restringir el pegote de directorios:

echo H2*/ 
+0

Punto de interés. Pero esto incluirá archivos que comiencen con "H2", y el OP solo quiere subdirectorios. – harpo

+0

@harpo: ok, he editado mi respuesta – Philipp

2

Tal vez esto es lo que busca?

ls | grep H2* 
+1

Perfecto para mí. También le permite hacer cosas como 'ls -l | patrón grep' –

13

usted debe considerar el uso de encontrar, como

find . -type d -maxdepth 1 -name "H2*" 
+1

considere poner -maxdepth before -type, su comando probablemente se ejecutará en una advertencia. No importa, no es un gran problema. –

Cuestiones relacionadas