Respuestas:
Use la -obandera entre diferentes parámetros.
find ./ -type f \( -iname \*.jpg -o -iname \*.png \) Funciona de maravilla.
NOTA No debe haber un espacio entre el soporte y su contenido o no va a funcionar.
Explicación:
type -f - solo busca archivos (no directorios)\(- necesario para type -fque se aplique a todos los argumentos-o - operador lógico OR-iname- como -name, pero el partido no distingue entre mayúsculas y minúsculastype -fno se extiende y se aplica a ambas expresiones sin paréntesis, por lo tanto, find ./ -type f -iname \*.jpg -o -type f -iname \*.pngtambién funciona ... aunque son dos caracteres más largos :-)
a * b + ces diferente dea * (b + c)
Puede combinar criterios -osegún lo sugerido por Shadur . Tenga en cuenta que -otiene una precedencia menor que la yuxtaposición, por lo que puede necesitar paréntesis.
find . -name '*.jpg' -o -name '*.png'
find . -mtime -7 \( '*.jpg' -o -name '*.png' \) # all .jpg or .png images modified in the past week
En Linux, puede usar -regexpara combinar extensiones de una manera más tersa. La sintaxis regexp predeterminada es Emacs ( expresiones regulares básicas más algunas extensiones como la \|alternancia); hay una opción para cambiar a expresiones regulares extendidas .
find -regex '.*\.\(jpg\|png\)'
find -regextype posix-extended -regex '.*\.(jpg|png)'
En FreeBSD, NetBSD y OSX, puede usar -regexcombinado con -Eexpresiones regulares extendidas.
find -E . -regex '.*\.(jpg|png)'
-inamelugar de -name- luego también capturará image.JPGyimage.PnG
Esto es más correcto:
find . -iregex '.*\.\(jpg\|gif\|png\|jpeg\)$'
-iregexcoincide jpgtanto como JPG Jpg jpGy tal. Creo que $no se necesita.
find -E . -iregex '.*\.(jpg|png|gif)'como se muestra en la respuesta de @ sorin.
Para que quede claro, la única opción que funciona en Linux, Unix y MacOS es:
find -E . -regex '.*\.(jpg|png)'
Esto se debe a que la versión de OS X es un poco diferente, pero es importante escribir cosas que funcionen bien en la mayoría de las plataformas.
-type f \( -iname \*.png -o -iname \*.jpg\)no funciona en OSX?
find -namepatrón que coincide con múltiples patrones en SO