J'ai besoin de trouver tous les fichiers images du répertoire (gif, png, jpg, jpeg).
find /path/to/ -name "*.jpg" > log
Comment modifier cette chaîne pour ne pas trouver uniquement les fichiers .jpg ?
J'ai besoin de trouver tous les fichiers images du répertoire (gif, png, jpg, jpeg).
find /path/to/ -name "*.jpg" > log
Comment modifier cette chaîne pour ne pas trouver uniquement les fichiers .jpg ?
@Gerald : Il est probable que vous deviez regrouper votre expression OR entre des parenthèses échappées : find /path/to/ \( -iname '*.gif' -o -iname '*.jpg' \) -exec ls -l {} \;
sinon l'exécution ne s'applique qu'à la dernière partie ( -iname '*.jpg'
dans ce cas).
Hmmm le -E
L'option indique find
pour utiliser des "expressions régulières étendues". Plusieurs autres outils ont une option similaire, mais je ne suis pas sûr que cette option soit disponible sur toutes les distributions UNIX.
find /path/to/ -type f -print0 | xargs -0 file | grep -i image
Cela utilise le file
pour essayer de reconnaître le type de fichier, indépendamment du nom de fichier (ou de l'extension).
Si /path/to
ou un nom de fichier contient la chaîne de caractères image
alors la méthode ci-dessus peut renvoyer des résultats erronés. Dans ce cas, je suggère
cd /path/to
find . -type f -print0 | xargs -0 file --mime-type | grep -i image/
Pourriez-vous expliquer pourquoi vous avez ajouté les parenthèses (échappées) autour des paramètres nom/nom ?
Une raison pour cette incohérence ? -iname *.jpg
, -o -name *.jpeg
, -o -iname *gif
ont tous un format légèrement différent.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.