Puedo obtener todas las jpg
imágenes usando:
find . -name "*.jpg"
Pero, ¿cómo puedo agregar png
archivos a los resultados también?
find
regular-expression
wong2
fuente
fuente
find -name
patrón que coincide con múltiples patrones en SORespuestas:
Use la
-o
bandera 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 paratype -f
que se aplique a todos los argumentos-o
- operador lógico OR-iname
- como-name
, pero el partido no distingue entre mayúsculas y minúsculasfuente
type -f
no se extiende y se aplica a ambas expresiones sin paréntesis, por lo tanto,find ./ -type f -iname \*.jpg -o -type f -iname \*.png
también funciona ... aunque son dos caracteres más largos :-)a * b + c
es diferente dea * (b + c)
Puede combinar criterios
-o
según lo sugerido por Shadur . Tenga en cuenta que-o
tiene una precedencia menor que la yuxtaposición, por lo que puede necesitar paréntesis.En Linux, puede usar
-regex
para 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 .En FreeBSD, NetBSD y OSX, puede usar
-regex
combinado con-E
expresiones regulares extendidas.fuente
-iname
lugar de-name
- luego también capturaráimage.JPG
yimage.PnG
Esto es más correcto:
fuente
-iregex
coincidejpg
tanto comoJPG Jpg jpG
y 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:
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.
fuente
-type f \( -iname \*.png -o -iname \*.jpg\)
no funciona en OSX?Úsalo.
fuente