Je peux obtenir toutes les jpg
images en utilisant:
find . -name "*.jpg"
Mais comment puis-je ajouter des png
fichiers aux résultats?
find
regular-expression
wong2
la source
la source
find -name
modèle qui correspond à des modèles multiples à SORé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 cassela source
type -f
ne s'étend pas et ne s'applique pas aux deux expressions sans les parenthèses. Donc, celafind ./ -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.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 .Sous FreeBSD, NetBSD et OSX, vous pouvez l’utiliser en
-regex
combinaison avec-E
les expressions rationnelles étendues.la source
-iname
au lieu de-name
- alors vous allez aussi capturerimage.JPG
etimage.PnG
Ceci est plus correct:
la source
-iregex
matchsjpg
aussi bienJPG 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:
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.
la source
-type f \( -iname \*.png -o -iname \*.jpg\)
ne fonctionne pas sur OSX?Utilise le.
la source