Detecter des images foireuses

Lorsque l'on doit retrouver dans une arborescence toutes les images jpeg,gif ou png qui n'en sont pas, parce que une "bonne âme" a fait une malencontreuse "erreur" lors d'un transfert de fichiers qui c'est mal passé et que la "bonne âme" en question n'a pas pris la peine de tester son boulot...
Enfin bref je veux donc détecter toutes les images qui n'en sont pas.
Première étape, détecter tous les fichiers qui finissent par gif,png et jpg :
find mydirectory/ -regextype egrep -iregex '.+\.(png|gif|jpg)'
Cette commande va me trouver tous les fichiers qui possèdent un nom qui va se terminer par un .png ou un .gi ou encore un .jpg.
Ok on a la liste de toutes les images reste à trier le bon grain de l'ivraie pour cela je vais utiliser la commande identify du superbe Imagemagick Cet outil très puissant permet entre autre de traiter des images en ligne de commande et il se trouve qu'avec identify on va laisser imagemagick détecter s'il s'agit d'une image. Si l'image n'en est pas une on aura une erreur et on pourra se concentrer sur ces fichiers images corrompus. En gros ça donne :
find mydirectory/ -regextype egrep -iregex '.+\.(png|gif|jpg)'|xargs identify 2>erreurs_images.txt
Et voila ! on utilise xargs pour transmettre le résultats de la commande précédente (le find) comme argument à la commande identify, puis avec la redirection de STDERR ( 2> ) on récolte toutes les erreurs dans un fichier pour traitement.

Commentaires

Unknown a dit…
Merci c'est exactement ce que je cherchais :)

Bonne Journée

Posts les plus consultés de ce blog

Comment extraire les fichiers disques en raw d'un backup proxmox vma

Find the lists of disks of your Proxmox VM stored in a ceph cluster

Comment copier une machine virtuelle kvm en raw sur un Volume Group LVM2 se trouvant sur un disque en DRBD