web-dev-qa-db-fra.com

Liste de tous les fichiers d'images graphiques avec find?

Il existe de nombreux types d'images graphiques dans cette immense archive tels que .jpg, .gif, .png, etc. Je ne connais pas tous les types. Existe-t-il un moyen avec 'find' pour pouvoir faire lister toutes les images graphiques quel que soit leur nom d'extension de point? Merci!

43
Edward

Cela devrait faire l'affaire

find . -name '*' -exec file {} \; | grep -o -P '^.+: \w+ image'

exemple de sortie:

./navigation/doc/Sphärische_Trigonometrie-Dateien/bfc9bd9372f650fd158992cf5948debe.png: PNG image
./navigation/doc/Sphärische_Trigonometrie-Dateien/6564ce3c5b95ded313b84fa918b32776.png: PNG image
./navigation/doc/subr_1.jpe: JPEG image
./navigation/doc/Astroanalytisch-Dateien/Gamma.gif: GIF image
./navigation/doc/Astroanalytisch-Dateien/deltaS.jpg: JPEG image
./navigation/doc/Astroanalytisch-Dateien/GammaBau.jpg: JPEG image
51
j.holetzeck

Ce qui suit me convient mieux car dans mon cas, je voulais diriger cette liste de fichiers vers un autre programme.

find . -type f -exec file {} \; | awk -F: '{if ($2 ~/image/) print $1}'

Si vous vouliez tarer les images (comme quelqu'un dans les commentaires) a demandé

find . -type f -exec file {} \; | awk -F: '{if ($2 ~/image/) printf("%s%c", $1, 0)}' | tar -cvf /tmp/file.tar --null -T -
25
f3xy
find . -type f -exec file {} \; | grep -o -P '^.+: \w+ image'

devrait même être mieux.

11
Nicolas Appriou

Grepping ou en utilisant awk pour "image" seulement ne le fera pas. Les fichiers PSD seront identifiés par "Image" avec un "I" majuscule, nous devons donc améliorer l'expression rationnelle pour être insensible à la casse ou inclure également le I. majuscule. Les fichiers EPS ne contiendront pas du tout le mot "image", donc nous doivent également correspondre à "EPS" ou "Postscript" en fonction de ce que vous voulez. Voici donc ma version améliorée:

find . -type f -exec file {} \; | awk -F: '{ if ($2 ~/[Ii]mage|EPS/) print $1}'
6
fltman

Lié au même problème, je viens de publier un outil appelé photofind ( https://github.com/trimap/photofind ). Il se comporte comme la commande find normale mais est spécialisé pour les fichiers image et prend en charge le filtrage des résultats également en fonction des informations EXIF ​​stockées dans les fichiers image. Voir le github-repo lié pour plus de détails.

1
juusor