Ls recursiva con condiciones


16

¿Por qué no puedo usar un comando como este para encontrar todos los archivos pdf en un directorio y subdirectorios? ¿Cómo lo hago? (Estoy usando bash en ubuntu)

ls -R *.pdf

EDITAR

¿Cómo haría para eliminar todos estos archivos?

Respuestas:


22

¿Por qué no puedo usar un comando como este para encontrar todos los archivos pdf en un directorio y subdirectorios?

El comodín *.pdfen su comando se expande basha todos los archivos coincidentes en el directorio actual, antes de ejecutarse ls.


¿Cómo lo hago? (Estoy usando bash en ubuntu)

encontrar es tu respuesta.

find . -name \*.pdf

es una lista recursiva de archivos pdf. -inamees una coincidencia entre mayúsculas y minúsculas, así que

find . -iname \*.pdf

enumera todos los archivos .pdf, incluidos, por ejemplo, foo.PDF

Además, puede usar ls para un número limitado de subcarpetas, por ejemplo

ls *.pdf */*.pdf

para encontrar todos los archivos pdf en subcarpetas (coincide con bar / foo.pdf, no con bar / foo / asdf.pdf y no con foo.PDF).

Si desea eliminar los archivos encontrados con find, puede usar

find . -iname \*.pdf -delete

1
En caso de que desee una salida similar al ls -lcomando, que muestre el tamaño del archivo, la propiedad, la fecha, etc., puede usar findcon la -lsopción, por ejemplofind . -name \*.pdf -ls
RFVoltolini

2

Como otros han dicho, encontrar es la respuesta.

Ahora para responder a la otra parte.

  • ¿Cómo haría para eliminar todos estos archivos?

    encontrar . -iname * .pdf -exec rm {} \;

Deberías hacerlo.


2
Debe citar su globo para evitar que se expanda prematuramente.
Pausado hasta nuevo aviso.

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.