2010-04-12 14 views

Respuesta

118
find /path/to -regex ".*\.\(jpg\|gif\|png\|jpeg\)" > log 
+5

No funciona para mí en mac, pero funciona con la opción -E (extendida) (¿tal vez la tubería es una función extendida?): buscar -E/ruta/a -iregex ". * \. (Jpg | gif | png | jpeg)"> log – ling

96
find /path/to/ -iname '*.gif' -o -iname '*.jpg' -o -iname '*.png' -o -iname '*.jpeg' 

funcionará. Puede haber una manera más elegante.

+14

-iname sería insensible a las mayúsculas –

+0

'exec' parece no funcionar de esta manera. – Gerald

5
find /path -type f \(-iname "*.jpg" -o -name "*.jpeg" -o -iname "*gif" \) 
+1

¿Podría explicar por qué agregó el paréntesis (escapado) alrededor de los parámetros nombre/iname? –

+0

Si agrega un comando de eliminación, entonces tendrá sentido. – johndpope

10
find /path/to/ -type f -print0 | xargs -0 file | grep -i image 

Este utiliza el comando file para tratar de reconocer el tipo de archivo, independientemente del nombre de archivo (o extensión).

Si /path/to o un nombre de archivo contiene la cadena image, lo anterior puede devolver resultados falsos. En ese caso, me gustaría sugerir

cd /path/to 
find . -type f -print0 | xargs -0 file --mime-type | grep -i image/ 
+0

Lo siento, tuve un clic errante allí y al parecer no puedo deshacer el downvote ... :( –

17

find -E /path/to -regex ".*\.(jpg|gif|png|jpeg)" > log

El -E le evita tener que escapar de los parens y tuberías de su expresión regular.

+1

mi búsqueda no tiene esta -E – wieczorek1990

+0

Hmmm la opción '-E' dice' find' para usar "expresiones regulares extendidas". Varias otras herramientas tienen una opción similar, pero no estoy seguro de que esta opción esté disponible en todas las distribuciones de UNIX. – tboyce12

+5

También funciona en Mac OS. –

1
find -regex ".*\.\(jpg\|gif\|png\|jpeg\)" 
6

En complemento a la respuesta @Dennis Williamson 's anterior, si desea que la misma expresión regular para distinguir entre mayúsculas y minúsculas para las extensiones de archivo, utilice -iregex:

find /path/to -iregex ".*\.\(jpg\|gif\|png\|jpeg\)" > log 
0

en Mac OS Utilice

find -E packages -regex ".*\.(jpg|gif|png|jpeg)" 
Cuestiones relacionadas