Réponses:
Utilisez l' -o
indicateur 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 -f
application à tous les arguments-o
- opérateur logique OU-iname
- comme -name
, mais la correspondance est insensible à la cassetype -f
ne 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 \*.png
fonctionne aussi ... bien que ce soit deux caractères plus longs :-)
a * b + c
est différent dea * (b + c)
Vous pouvez combiner des critères avec -o
ceux suggérés par Shadur . Notez que -o
la 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 -regex
combiner 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 -regex
combinaison avec -E
les expressions rationnelles étendues.
find -E . -regex '.*\.(jpg|png)'
-iname
au lieu de -name
- alors vous allez aussi capturer image.JPG
etimage.PnG
Ceci est plus correct:
find . -iregex '.*\.\(jpg\|gif\|png\|jpeg\)$'
-iregex
matchs jpg
aussi bien JPG Jpg jpG
et 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 -name
modèle qui correspond à des modèles multiples à SO