Réponses:
Utilisez l' -oindicateur entre différents paramètres.
find ./ -type f \( -iname \*.jpg -o -iname \*.png \) fonctionne comme un charme.
REMARQUE Il doit y avoir un espace entre le support et son contenu, sinon cela ne fonctionnera pas.
Explication:
type -f - rechercher uniquement des fichiers (pas des répertoires)\(- nécessaire pour l' type -fapplication à tous les arguments-o - opérateur logique OU-iname- comme -name, mais la correspondance est insensible à la cassetype -fne s'étend pas et ne s'applique pas aux deux expressions sans les parenthèses. Donc, cela find ./ -type f -iname \*.jpg -o -type f -iname \*.pngfonctionne aussi ... bien que ce soit deux caractères plus longs :-)
a * b + cest différent dea * (b + c)
Vous pouvez combiner des critères avec -oceux suggérés par Shadur . Notez que -ola priorité est inférieure à la juxtaposition, vous aurez donc peut-être besoin de parenthèses.
find . -name '*.jpg' -o -name '*.png'
find . -mtime -7 \( '*.jpg' -o -name '*.png' \) # all .jpg or .png images modified in the past week
Sous Linux, vous pouvez -regexcombiner des extensions de manière modérée. La syntaxe par défaut des expressions rationnelles est Emacs (expressions rationnelles de base plus quelques extensions telles que l' \|alternance); il y a une option pour passer aux expressions rationnelles étendues .
find -regex '.*\.\(jpg\|png\)'
find -regextype posix-extended -regex '.*\.(jpg|png)'
Sous FreeBSD, NetBSD et OSX, vous pouvez l’utiliser en -regexcombinaison avec -Eles expressions rationnelles étendues.
find -E . -regex '.*\.(jpg|png)'
-inameau lieu de -name- alors vous allez aussi capturer image.JPGetimage.PnG
Ceci est plus correct:
find . -iregex '.*\.\(jpg\|gif\|png\|jpeg\)$'
-iregexmatchs jpgaussi bien JPG Jpg jpGet tel. Je pense que le $n'est pas nécessaire.
find -E . -iregex '.*\.(jpg|png|gif)'comme le montre la réponse de @ sorin.
Pour que ce soit clair, la seule option qui fonctionne sous Linux, Unix et Mac OS est la suivante:
find -E . -regex '.*\.(jpg|png)'
C'est parce que la version OS X est un peu différente, mais il est important d'écrire des choses qui vont bien sur la plupart des plateformes.
-type f \( -iname \*.png -o -iname \*.jpg\)ne fonctionne pas sur OSX?
find -namemodèle qui correspond à des modèles multiples à SO