Comment utiliser la commande rechercher pour trouver tous les fichiers avec les extensions de la liste?
J'ai besoin de trouver tous les fichiers d'image de répertoire (gif, png, jpg, jpeg).
find /path/to/ -name "*.jpg" > log
Comment modifier cette chaîne de trouver non seulement .les fichiers jpg?
Vous devez vous connecter pour publier un commentaire.
fonctionne. Il pourrait y avoir une façon plus élégante.
exec
semble ne pas fonctionner de cette façon.find /path/to/ \( -iname '*.gif' -o -iname '*.jpg' \) -exec ls -l {} \;
sinon le exec ne s'applique qu'à la dernière partie (-iname '*.jpg'
dans ce cas).find -E /path/to -regex ".*\.(jpg|gif|png|jpeg)" > log
La
-E
vous évite d'avoir à échapper à la parens et les tuyaux de votre regex.-E
option indiquefind
d'utiliser "les" expressions régulières". Plusieurs autres outils ont une option similaire, mais je ne suis pas sûr que cette option est disponible sur toutes les distributions UNIX.find . -regextype posix-extended -regex ".*\.(jpg|gif|png|jpeg)"
..JPG
plutôt juste.jpg
)?find -E /path/to -iregex ".*\.(jpg|gif|png|jpeg)" > log
. À l'aide de la-iregex
drapeau ditfind
à la casse insensiblement.Il utilise le
file
de commande pour essayer de reconnaître le type de fichier, indépendamment du nom de fichier (ou l'extension).Si
/path/to
ou un nom de fichier contient la chaîne de caractèresimage
, puis de les retourner faux hits. Dans ce cas, je vous suggère deDans le supplément @Dennis Williamson 's réponse ci-dessus, si vous voulez la même expression régulière pour être sensible à la casse pour les extensions de fichier, utilisez -iregex :
-iname *.jpg
,-o -name *.jpeg
,-o -iname *gif
ont tous un format légèrement différent.Sur Mac OS utiliser
dans le cas des fichiers n'ont pas d'extension, nous pouvons regarder pour le type mime du fichier
où (audio|vidéo|matroska|mpeg) sont des types mime regex
&si vous voulez les supprimer:
ou de supprimer tout le reste, mais ces extensions:
avis de l' !~ au lieu de ~