Recherche de site Web

fdupes - Un outil de ligne de commande pour rechercher et supprimer les fichiers en double sous Linux


Il est courant de rechercher et de remplacer les fichiers en double pour la plupart des utilisateurs d'ordinateurs. Rechercher et supprimer les fichiers en double est un travail fastidieux qui demande du temps et de la patience. Trouver des fichiers en double peut être très simple si votre machine est alimentée par GNU/Linux, grâce à l'utilitaire « fdupes ».

Qu'est-ce que fdupes ?

Fdupes est un utilitaire Linux écrit par Adrian Lopez en langage de programmation C publié sous licence MIT. L'application est capable de trouver les fichiers en double dans l'ensemble donné de répertoires et sous-répertoires. Fdupes reconnaît les doublons en comparant la signature MD5 des fichiers suivie d'une comparaison octet par octet. De nombreuses options peuvent être transmises avec Fdupes pour lister, supprimer et remplacer les fichiers par des liens physiques vers des doublons.

La comparaison commence dans l'ordre :

Comparaison de taille > Comparaison partielle des signatures MD5 > Comparaison complète des signatures MD5 > Comparaison octet à octet.

Installer fdupes sur Linux

Installation de la dernière version de fdupes (fdupes version 1.51) aussi simple que d'exécuter la commande suivante sur des systèmes basés sur Debian tels que Ubuntu et Linux Mint.

sudo apt-get install fdupes

Sur les systèmes basés sur CentOS/RHEL et Fedora, vous devez activer le référentiel epel pour installer le package fdupes.

yum install fdupes
dnf install fdupes    [On Fedora 22 onwards]

Remarque : Le gestionnaire de paquets par défaut yum est remplacé par dnf de Fedora 22 À partir de…

Comment utiliser la commande fdupes ?

1. À des fins de démonstration, créons quelques fichiers en double dans un répertoire (par exemple tecmint) simplement comme :

mkdir /home/"$USER"/Desktop/tecmint && cd /home/"$USER"/Desktop/tecmint && for i in {1..15}; do echo "I Love Tecmint. Tecmint is a very nice community of Linux Users." > tecmint${i}.txt ; done

Après avoir exécuté la commande ci-dessus, vérifions que les fichiers en double sont créés ou n'utilisent pas la commande ls.

$ ls -l

total 60
-rw-r--r-- 1 tecmint tecmint 65 Aug  8 11:22 tecmint10.txt
-rw-r--r-- 1 tecmint tecmint 65 Aug  8 11:22 tecmint11.txt
-rw-r--r-- 1 tecmint tecmint 65 Aug  8 11:22 tecmint12.txt
-rw-r--r-- 1 tecmint tecmint 65 Aug  8 11:22 tecmint13.txt
-rw-r--r-- 1 tecmint tecmint 65 Aug  8 11:22 tecmint14.txt
-rw-r--r-- 1 tecmint tecmint 65 Aug  8 11:22 tecmint15.txt
-rw-r--r-- 1 tecmint tecmint 65 Aug  8 11:22 tecmint1.txt
-rw-r--r-- 1 tecmint tecmint 65 Aug  8 11:22 tecmint2.txt
-rw-r--r-- 1 tecmint tecmint 65 Aug  8 11:22 tecmint3.txt
-rw-r--r-- 1 tecmint tecmint 65 Aug  8 11:22 tecmint4.txt
-rw-r--r-- 1 tecmint tecmint 65 Aug  8 11:22 tecmint5.txt
-rw-r--r-- 1 tecmint tecmint 65 Aug  8 11:22 tecmint6.txt
-rw-r--r-- 1 tecmint tecmint 65 Aug  8 11:22 tecmint7.txt
-rw-r--r-- 1 tecmint tecmint 65 Aug  8 11:22 tecmint8.txt
-rw-r--r-- 1 tecmint tecmint 65 Aug  8 11:22 tecmint9.txt

Le script ci-dessus crée 15 fichiers, à savoir tecmint1.txt, tecmint2.txt… tecmint15.txt et chaque fichier contient les mêmes données, c'est-à-dire :

"I Love Tecmint. Tecmint is a very nice community of Linux Users."

2. Recherchez maintenant les fichiers en double dans le dossier tecmint.

$ fdupes /home/$USER/Desktop/tecmint 

/home/tecmint/Desktop/tecmint/tecmint13.txt
/home/tecmint/Desktop/tecmint/tecmint8.txt
/home/tecmint/Desktop/tecmint/tecmint11.txt
/home/tecmint/Desktop/tecmint/tecmint3.txt
/home/tecmint/Desktop/tecmint/tecmint4.txt
/home/tecmint/Desktop/tecmint/tecmint6.txt
/home/tecmint/Desktop/tecmint/tecmint7.txt
/home/tecmint/Desktop/tecmint/tecmint9.txt
/home/tecmint/Desktop/tecmint/tecmint10.txt
/home/tecmint/Desktop/tecmint/tecmint2.txt
/home/tecmint/Desktop/tecmint/tecmint5.txt
/home/tecmint/Desktop/tecmint/tecmint14.txt
/home/tecmint/Desktop/tecmint/tecmint1.txt
/home/tecmint/Desktop/tecmint/tecmint15.txt
/home/tecmint/Desktop/tecmint/tecmint12.txt

3. Recherchez les doublons de manière récursive sous chaque répertoire, y compris ses sous-répertoires, à l'aide de l'option -r.

Il effectue une recherche récursive dans tous les fichiers et dossiers, en fonction du nombre de fichiers et de dossiers, l'analyse des doublons prendra un certain temps. Pendant ce temps, la progression totale dans le terminal vous sera présentée, quelque chose comme ceci.

$ fdupes -r /home

Progress [37780/54747] 69%

4. Consultez la taille des doublons trouvés dans un dossier à l'aide de l'option -S.

$ fdupes -S /home/$USER/Desktop/tecmint

65 bytes each:                          
/home/tecmint/Desktop/tecmint/tecmint13.txt
/home/tecmint/Desktop/tecmint/tecmint8.txt
/home/tecmint/Desktop/tecmint/tecmint11.txt
/home/tecmint/Desktop/tecmint/tecmint3.txt
/home/tecmint/Desktop/tecmint/tecmint4.txt
/home/tecmint/Desktop/tecmint/tecmint6.txt
/home/tecmint/Desktop/tecmint/tecmint7.txt
/home/tecmint/Desktop/tecmint/tecmint9.txt
/home/tecmint/Desktop/tecmint/tecmint10.txt
/home/tecmint/Desktop/tecmint/tecmint2.txt
/home/tecmint/Desktop/tecmint/tecmint5.txt
/home/tecmint/Desktop/tecmint/tecmint14.txt
/home/tecmint/Desktop/tecmint/tecmint1.txt
/home/tecmint/Desktop/tecmint/tecmint15.txt
/home/tecmint/Desktop/tecmint/tecmint12.txt

5. Vous pouvez voir la taille des fichiers en double pour chaque répertoire et sous-répertoire rencontrés en utilisant les options -S et -r en même temps. , comme:

$ fdupes -Sr /home/avi/Desktop/

65 bytes each:                          
/home/tecmint/Desktop/tecmint/tecmint13.txt
/home/tecmint/Desktop/tecmint/tecmint8.txt
/home/tecmint/Desktop/tecmint/tecmint11.txt
/home/tecmint/Desktop/tecmint/tecmint3.txt
/home/tecmint/Desktop/tecmint/tecmint4.txt
/home/tecmint/Desktop/tecmint/tecmint6.txt
/home/tecmint/Desktop/tecmint/tecmint7.txt
/home/tecmint/Desktop/tecmint/tecmint9.txt
/home/tecmint/Desktop/tecmint/tecmint10.txt
/home/tecmint/Desktop/tecmint/tecmint2.txt
/home/tecmint/Desktop/tecmint/tecmint5.txt
/home/tecmint/Desktop/tecmint/tecmint14.txt
/home/tecmint/Desktop/tecmint/tecmint1.txt
/home/tecmint/Desktop/tecmint/tecmint15.txt
/home/tecmint/Desktop/tecmint/tecmint12.txt

107 bytes each:
/home/tecmint/Desktop/resume_files/r-csc.html
/home/tecmint/Desktop/resume_files/fc.html

6. Outre la recherche récursive dans un dossier ou dans tous les dossiers, vous pouvez choisir de choisir dans deux ou trois dossiers selon vos besoins. Sans oublier que vous pouvez utiliser l'option -S et/ou -r si nécessaire.

fdupes /home/avi/Desktop/ /home/avi/Templates/

7. Pour supprimer les fichiers en double tout en conservant une copie, vous pouvez utiliser l'option '-d'. Des précautions supplémentaires doivent être prises lors de l'utilisation de cette option, sinon vous risquez de perdre les fichiers/données nécessaires et gardez à l'esprit que le processus est irrécupérable.

$ fdupes -d /home/$USER/Desktop/tecmint

[1] /home/tecmint/Desktop/tecmint/tecmint13.txt
[2] /home/tecmint/Desktop/tecmint/tecmint8.txt
[3] /home/tecmint/Desktop/tecmint/tecmint11.txt
[4] /home/tecmint/Desktop/tecmint/tecmint3.txt
[5] /home/tecmint/Desktop/tecmint/tecmint4.txt
[6] /home/tecmint/Desktop/tecmint/tecmint6.txt
[7] /home/tecmint/Desktop/tecmint/tecmint7.txt
[8] /home/tecmint/Desktop/tecmint/tecmint9.txt
[9] /home/tecmint/Desktop/tecmint/tecmint10.txt
[10] /home/tecmint/Desktop/tecmint/tecmint2.txt
[11] /home/tecmint/Desktop/tecmint/tecmint5.txt
[12] /home/tecmint/Desktop/tecmint/tecmint14.txt
[13] /home/tecmint/Desktop/tecmint/tecmint1.txt
[14] /home/tecmint/Desktop/tecmint/tecmint15.txt
[15] /home/tecmint/Desktop/tecmint/tecmint12.txt

Set 1 of 1, preserve files [1 - 15, all]: 

Vous remarquerez peut-être que tous les doublons sont répertoriés et que vous êtes invité à les supprimer, soit un par un, soit dans une certaine plage, soit tous en une seule fois. Vous pouvez sélectionner une plage comme ci-dessous pour supprimer les fichiers d'une plage spécifique.

Set 1 of 1, preserve files [1 - 15, all]: 2-15

   [-] /home/tecmint/Desktop/tecmint/tecmint13.txt
   [+] /home/tecmint/Desktop/tecmint/tecmint8.txt
   [-] /home/tecmint/Desktop/tecmint/tecmint11.txt
   [-] /home/tecmint/Desktop/tecmint/tecmint3.txt
   [-] /home/tecmint/Desktop/tecmint/tecmint4.txt
   [-] /home/tecmint/Desktop/tecmint/tecmint6.txt
   [-] /home/tecmint/Desktop/tecmint/tecmint7.txt
   [-] /home/tecmint/Desktop/tecmint/tecmint9.txt
   [-] /home/tecmint/Desktop/tecmint/tecmint10.txt
   [-] /home/tecmint/Desktop/tecmint/tecmint2.txt
   [-] /home/tecmint/Desktop/tecmint/tecmint5.txt
   [-] /home/tecmint/Desktop/tecmint/tecmint14.txt
   [-] /home/tecmint/Desktop/tecmint/tecmint1.txt
   [-] /home/tecmint/Desktop/tecmint/tecmint15.txt
   [-] /home/tecmint/Desktop/tecmint/tecmint12.txt

8. Du point de vue de la sécurité, vous souhaiterez peut-être imprimer la sortie de 'fdupes' dans un fichier, puis vérifier le fichier texte pour décider quel fichier supprimer. Cela réduit les risques de suppression accidentelle de votre fichier. Vous pouvez faire :

fdupes -Sr /home > /home/fdupes.txt

Remarque : Vous pouvez remplacer '/home' par le dossier de votre choix. Utilisez également l'option '-r' et '-S' si vous souhaitez effectuer une recherche récursive et la taille d'impression, respectivement.

9. Vous pouvez omettre le premier fichier de chaque ensemble de correspondances en utilisant l'option '-f'.

Première liste des fichiers du répertoire.

$ ls -l /home/$USER/Desktop/tecmint

total 20
-rw-r--r-- 1 tecmint tecmint 65 Aug  8 11:22 tecmint9 (3rd copy).txt
-rw-r--r-- 1 tecmint tecmint 65 Aug  8 11:22 tecmint9 (4th copy).txt
-rw-r--r-- 1 tecmint tecmint 65 Aug  8 11:22 tecmint9 (another copy).txt
-rw-r--r-- 1 tecmint tecmint 65 Aug  8 11:22 tecmint9 (copy).txt
-rw-r--r-- 1 tecmint tecmint 65 Aug  8 11:22 tecmint9.txt

puis omettez le premier fichier de chaque ensemble de correspondances.

$ fdupes -f /home/$USER/Desktop/tecmint

/home/tecmint/Desktop/tecmint9 (copy).txt
/home/tecmint/Desktop/tecmint9 (3rd copy).txt
/home/tecmint/Desktop/tecmint9 (another copy).txt
/home/tecmint/Desktop/tecmint9 (4th copy).txt

10. Vérifiez la version installée de fdupes.

$ fdupes --version

fdupes 1.51

11. Si vous avez besoin d'aide sur les fdupes, vous pouvez utiliser le commutateur '-h'.

$ fdupes -h

Usage: fdupes [options] DIRECTORY...

 -r --recurse     	for every directory given follow subdirectories
                  	encountered within
 -R --recurse:    	for each directory given after this option follow
                  	subdirectories encountered within (note the ':' at
                  	the end of the option, manpage for more details)
 -s --symlinks    	follow symlinks
 -H --hardlinks   	normally, when two or more files point to the same
                  	disk area they are treated as non-duplicates; this
                  	option will change this behavior
 -n --noempty     	exclude zero-length files from consideration
 -A --nohidden    	exclude hidden files from consideration
 -f --omitfirst   	omit the first file in each set of matches
 -1 --sameline    	list each set of matches on a single line
 -S --size        	show size of duplicate files
 -m --summarize   	summarize dupe information
 -q --quiet       	hide progress indicator
 -d --delete      	prompt user for files to preserve and delete all
                  	others; important: under particular circumstances,
                  	data may be lost when using this option together
                  	with -s or --symlinks, or when specifying a
                  	particular directory more than once; refer to the
                  	fdupes documentation for additional information
 -N --noprompt    	together with --delete, preserve the first file in
                  	each set of duplicates and delete the rest without
                  	prompting the user
 -v --version     	display fdupes version
 -h --help        	display this help message

C'est pour tout maintenant. Faites-moi savoir comment vous trouviez et supprimiez les fichiers en double jusqu'à présent sous Linux ? et dites-moi également votre avis sur cet utilitaire. Mettez vos précieux commentaires dans la section commentaires ci-dessous et n'oubliez pas de nous aimer/partager et de nous aider à nous propager.

Je travaille sur un autre utilitaire appelé fslint pour supprimer les fichiers en double, je le publierai bientôt et vous adorerez lire.