Ceci est une ancienne révision du document !
Chercher des fichiers en double
Rechercher des doublons, des fichiers ou répertoires en plusieurs exemplaires.
Quelques applications
- Shredder duplicate finder (rmlint-gui) accessible depuis la logithèque d'Ubuntu ou avec sudo apt install rmlint-gui (Site officiel : Shredder duplicate finder)
- Speedy Duplicate Finder : Logiciel propriétaire, version de démonstration, accessible depuis la logithèque d'Ubuntu ou avec sudo snap install speedy-duplicate-finder
En ligne de commande
En une ligne
La commande ci-dessous va récupérer les fichiers dans le répertoire courant, et pour chaque fichier, calculer leur somme de hachage. Ensuite les sommes sont triés et seulement les doublons seront affichés (option -d et -D de uniq) 1)
find . ! -empty -type f -exec md5sum {} + | sort | uniq -w32 -dD
simple mais non optimisé si vous avez beaucoup de gros fichier (le hachage peut-être évité si les fichiers n'ont pas la même taille). Si vous êtes dans la situation où vous avez énormément de gros fichier, préférez fdupes ou la ligne ci-dessous…
Autre solution réalisant d'abord une recherche des doublons de tailles avant le réaliser le hachage 2) :
find . -not -empty -type f -printf "%s\n" | sort -rn | uniq -d |xargs -I{} -n1 find . -type f -size {}c -print0 | xargs -0 md5sum |sort | uniq -w32 --all-repeated=separate
Avec fdupes
Ce logiciel permet de donner les doublons en se basant sur le poids et la somme de hachage des fichiers.
Pour l'utiliser récursivement dans un dossier
fdupes -R .
Afficher les doublons uniquement en comparant les noms des fichiers
Utiliser la commande suivante qui affichera la taille et le chemin des fichiers ayant les mêmes noms.
find . -mindepth 1 -type f -printf '%s %p %f\n' | sort -t ' ' -k 3,3 | uniq -f 2 --all-repeated=separate | cut -d ' ' -f1,2
-type fpour indiquer à la commande find de ne prendre que les fichiers (pas les répertoires)-printf '%s %p %f\n'on affiche pour chaque entrée 3 champs (le poids, le chemin et le nom de fichier) séparé par un espace-t ' 'on indique à la commande sort qu'il y a des champs (donc de ne pas trier par ligne mais par un champ spécifique)-k 3,3on prend le 3ème champ-f 2pour la commande uniq on se base sur le 2ème champ.cut -d ' ' -f1,2on ne garde que les deux premiers champs (le poids et le chemin)
