2010-08-20 13 views

Respuesta

52

Si se siente más cómodo con "ls" y "grep" , puede hacer lo que quiera utilizando una expresión regular en el comando grep (el carácter '$' final indica que .doc debe estar al final de la línea. Esto excluirá "file.doc.txt"):

ls -R |grep "\.doc$" 

Más información sobre el uso de grep con expresiones regulares en the man.

+3

+1, aprendiendo algo nuevo sobre Linux todos los días. –

+1

probablemente sea bueno para escapar del punto, de lo contrario un archivo como 'hellodoc' también coincidiría. 'ls -R | grep "\ .doc $" ' – fedorqui

+4

¿Hay alguna manera de que esto le muestre la ruta completa de un archivo que' ls' encuentra? Ahora mismo solo tengo una lista de todos los archivos, pero no sé cómo encontrarlos ahora. – Russell

29

ls La salida del comando está destinada principalmente a la lectura humana. Para consultas avanzadas para su tratamiento automatizado, se debe utilizar más potente find comando:

find /path -type f \(-iname "*.doc" -o -iname "*.pdf" \) 

Como si tiene fiesta de 4.0 ++

#!/bin/bash 
shopt -s globstar 
shopt -s nullglob 
for file in **/*.{pdf,doc} 
do 
    echo "$file" 
done 
+0

Es **/*. Pdf **/*. Doc - no está recurriendo a los subdirectorios sin él – Petesh

+0

es realmente doble asterix – ghostdog74

+7

Puede hacer 'ls **/*. {Pdf, doc}' o 'para el archivo en **/*. {pdf, doc}' –

2

Algunos de los otros métodos que se pueden utilizar:

echo *.{pdf,docx,jpeg}

stat -c %n * | grep 'pdf\|docx\|jpeg'

-1

Del mismo modo, si usted prefiere usar el carácter comodín * (no es como las sugerencias de expresiones regulares) sólo puede utilizar ls con la bandera -l para listar un archivo por línea (como grep) y la bandera -R como la que tenía. Luego puede especificar los archivos que desea buscar con *.doc I.E. O bien

ls -l -R *.doc 

o si desea que enumere los archivos en menos líneas.

ls -R *.doc 
+0

¿Ha intentado ejecutar esto? mkdir tmp; cd tmp; mkdir a; toque a/a.doc; ls -l -R * .doc –

1
find . | grep "\.doc$" 

Esto le mostrará el camino también.

Cuestiones relacionadas