¿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?

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* 

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.


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.


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.


1
Esto es esencialmente lo mismo que la respuesta aceptada de cinco años.
— Scott
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.