2012-01-23-ean
Linux script to delete duplicated images
Histoire d'inaugurer correctement le nouveau serveur, un petit billet/astuce pour détecter des images en double dans un répertoire, et les supprimer si nécessaire.
Nous allons tout d'abord générer une liste de fichiers avec le hash md5 associée chaque fichier. Pour cela on utilise find couplé a md5sum:
find /home/user/repertoire -iname '*jpg'|while read n; do md5sum "$n" >> md5sum_images; done
Cette ligne crée un fichier structurée de la forme suivante:
somme1_md5(32_caracteres) ./nom_de_fichier1 somme2_md5(32_caracteres) ./nom_de_fichier2 etc...
Il va nous faloir tout d'abord trier les sommes de hashage pour détecter les doublons:
sort md5sum_images > sorted_md5sum_images
Puis détecter les doublons parmis ce nouveau fichier:
uniq -dw 32 --all-repeated=separate sorted_md5sum_images
- L'option -d indique de n'afficher que les éléments doublons
- L'option -w 32 indique de ne détecter les doublons que sur les 32 premiers caracte¨res
- L'option --all-repeated=separate demande d'afficher chaque occurence du doublon et de les séparer par une ligne blanche.
On obtient le résultat suivant:
00a49967be7f43d532db56e1dce595ed ./reptoire1/DSC00180.JPG 00a49967be7f43d532db56e1dce595ed ./repertoire2/DSC00180.JPG 00a597f061cabc1ef2af2ffa90948cf5 ./rep3/DSCF0167.JPG 00a597f061cabc1ef2af2ffa90948cf5 ./rep4/DSCF0167.JPG etc...
Et pour conclure, si on désire supprimer l'ensemble des doublons:
uniq -dw 32 sorted_md5sum_images |cut -d' ' -f 3|xargs rm -v