¿Cómo utilizar el comando buscar para buscar todos los archivos con extensiones de la lista?

Resuelto Kirzilla asked hace 14 años • 10 respuestas

Necesito encontrar todos los archivos de imagen del directorio (gif, png, jpg, jpeg).

find /path/to/ -name "*.jpg" > log

¿Cómo modificar esta cadena para encontrar no solo archivos .jpg?

Kirzilla avatar Apr 12 '10 18:04 Kirzilla
Aceptado
find /path/to -regex ".*\.\(jpg\|gif\|png\|jpeg\)" > log
Dennis Williamson avatar Apr 12 '2010 14:04 Dennis Williamson
find /path/to/  \( -iname '*.gif' -o -iname '*.jpg' \) -print0

trabajará. Quizás haya una forma más elegante.

JoseK avatar Apr 12 '2010 11:04 JoseK

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

Esto -Ele evita tener que escapar de los paréntesis y tuberías en su expresión regular.

tboyce12 avatar May 20 '2014 21:05 tboyce12
find /path/to/ -type f -print0 | xargs -0 file | grep -i image

Esto utiliza el filecomando para intentar reconocer el tipo de archivo, independientemente del nombre del archivo (o extensión).

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

cd /path/to
find . -type f -print0 | xargs -0 file --mime-type | grep -i image/
unutbu avatar Apr 12 '2010 11:04 unutbu