Mon, 23 Jan 2012 13:10:34 GMT / script
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é à chaque fichier. Pour cela on utilise find couplé à md5sum:
find /home/user/repertoire -iname '*jpg'|while read n; do md5sum "$n" >> md5sum_images; done
Cette ligne crée un fichier structuré 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 caractè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
Lire la suite...