¿Cómo obtener una lista de directorio de Linux para archivos que comienzan con una letra determinada que no desciende a subdirectorios?

17

Suponga que está en un directorio que contiene muchos archivos y muchos subdirectorios.

Desea obtener una lista de directorio de todos los archivos que comienzan con la letra "d". Escribes

ls d*

y lo que obtienes son principalmente archivos en subdirectorios (en particular, archivos en subdirectorios que comienzan con "d").

¿Cómo enumera solo los archivos y los nombres de directorio en su directorio actual?

dggoldst
fuente

Respuestas:

31

Ah, lo encontré en la sexta lectura de la página del manual. Es el parámetro "directorio" no tan sensiblemente llamado

ls -d d* 
dggoldst
fuente
66
¿Le tomó solo 29 segundos volver a leer la página del manual y escribir esta respuesta? Eso es rápido :-)
balpha
1
Además, ls -dd * / solo mostrará los directorios.
INNAM
66
balpha: lo descubrí antes de enviar la pregunta, luego me di cuenta de que si me tomaba tanto tiempo resolver esto, también podría ayudar a un futuro buscador y publicar el q y el a aquí.
dggoldst
3
Lo suficientemente justo; No tiene nada de malo.
balpha
1
Y, sin embargo, CppLearner, de hecho funciona. Intentalo.
dggoldst
10

Creo que otra solución interesante es,

ls | grep ^d

Ofrece la flexibilidad de las expresiones regulares.

Kuer
fuente
3
¡Y la complejidad de las expresiones regulares! ;-)
Chris Nava
1
Esa es una solución interesante, y me gusta la idea de usar expresiones regulares, sin embargo, si agrega parámetros adicionales a ls, se romperá. Por ejemplo, "ls -l | grep ^ d"
dggoldst el
Es cierto, pero no todos los parámetros. ls -a | grep "^ \." imprimiría todos los archivos "ocultos".
Kuer
otros ls flagsno funcionan cuando se usa este enfoque. Por ejemplo ls -ltr | grep ^d, no funciona. mientras que el sugerido en la respuesta @dggoldst sí.
hitesh israni
3

encontrar . -maxdepth 1 -name d * -type f

De acuerdo, usar find here es un poco exagerado. Solo un poco.

James Polley
fuente
1
Pero me ayudó a enumerar todos los directorios directos de un usuario específico: find /home/ -maxdepth 1 -type d -user www-data. Así que gracias, y +1
Cyril N.
1

ls -ld: Le dará la lista de directorios, sin descender a subdirectorios.

Ejemplo:

ls -ld Cust*
Este comando proporcionará una lista de los archivos y directorios que comienzan con Cust.

chelladurai
fuente
1
Esto es esencialmente lo mismo que la respuesta aceptada de cinco años.
Scott