Website-Suche

fdupes - ein Befehlszeilentool zum Auffinden und Löschen doppelter Dateien unter Linux


Für die meisten Computerbenutzer ist es eine häufige Anforderung, doppelte Dateien zu finden und zu ersetzen. Das Auffinden und Entfernen doppelter Dateien ist eine mühsame Arbeit, die Zeit und Geduld erfordert. Das Auffinden doppelter Dateien kann sehr einfach sein, wenn Ihr Rechner mit GNU/Linux betrieben wird, dank des Dienstprogramms 'fdupes'.

Was ist fdupes?

Fdupes ist ein Linux-Dienstprogramm, das von Adrian Lopez in der Programmiersprache C geschrieben und unter der MIT-Lizenz veröffentlicht wurde. Die Anwendung ist in der Lage, doppelte Dateien in einer bestimmten Gruppe von Verzeichnissen und Unterverzeichnissen zu finden. Fdupes erkennt Duplikate, indem es die MD5-Signatur von Dateien vergleicht, gefolgt von einem Byte-zu-Byte-Vergleich. Mit Fdupes können viele Optionen übergeben werden, um die Dateien aufzulisten, zu löschen und durch Hardlinks zu Duplikaten zu ersetzen.

Der Vergleich beginnt in der Reihenfolge:

Größenvergleich > Partieller MD5-Signaturvergleich > Vollständiger MD5-Signaturvergleich > Byte-zu-Byte-Vergleich.

Installieren von fdupes unter Linux

Die Installation der neuesten Version von fdupes (fdupes Version 1.51) ist so einfach wie das Ausführen des folgenden Befehls auf Debian-basierten Systemen wie Ubuntu und Linux Mint.

$ sudo apt-get install fdupes

Auf CentOS/RHEL- und Fedora-basierten Systemen müssen Sie das epel-Repository aktivieren, um das fdupes-Paket zu installieren.

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

Hinweis: Der Standard-Paketmanager yum wird ab Fedora 22 durch dnf ersetzt...

Wie verwende ich den Befehl fdupes?

1. Zu Demonstrationszwecken erstellen wir einige doppelte Dateien unter einem Verzeichnis (z. B. tecmint) einfach als:

$ 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

Nachdem wir den obigen Befehl ausgeführt haben, überprüfen wir, ob die doppelten Dateien erstellt wurden oder nicht, indem wir den Befehl ls verwenden.

$ 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

Das obige Skript erstellt 15 Dateien, nämlich tecmint1.txt, tecmint2.txt...tecmint15.txt und jede Datei enthält die gleichen Daten, d.h.

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

2. Suchen Sie nun innerhalb des Ordners tecmint nach doppelten Dateien.

$ 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. Suchen Sie rekursiv unter jedem Verzeichnis, einschließlich seiner Unterverzeichnisse, mit der Option -r.

Es wird rekursiv über alle Dateien und Ordner gesucht, abhängig von der Anzahl der Dateien und Ordner dauert es einige Zeit, Duplikate zu scannen. In der Zwischenzeit wird Ihnen der Gesamtfortschritt im Terminal angezeigt, etwa so.

$ fdupes -r /home

Progress [37780/54747] 69%

4. Sehen Sie sich die Größe der Duplikate an, die in einem Ordner gefunden werden, indem Sie die Option -S verwenden.

$ 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. Sie können die Größe doppelter Dateien für jedes Verzeichnis und alle Unterverzeichnisse, die darin vorkommen, gleichzeitig mit den Optionen -S und -r sehen, wie folgt:

$ 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. Abgesehen von der rekursiven Suche in einem Ordner oder allen Ordnern können Sie je nach Bedarf in zwei Ordnern oder drei Ordnern wählen. Ganz zu schweigen davon, dass Sie bei Bedarf die Option -S und/oder -r verwenden können.

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

7. Um die doppelten Dateien zu löschen, während eine Kopie erhalten bleibt, können Sie die Option '-d' verwenden. Bei der Verwendung dieser Option sollten Sie besonders vorsichtig sein, da Sie sonst möglicherweise die erforderlichen Dateien/Daten verlieren und beachten Sie, dass der Vorgang nicht wiederhergestellt werden kann.

$ 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]: 

Möglicherweise stellen Sie fest, dass alle Duplikate aufgelistet sind und Sie aufgefordert werden, sie zu löschen, entweder einzeln oder in einem bestimmten Bereich oder alle auf einmal. Sie können einen Bereich wie den folgenden auswählen, um Dateien mit einem bestimmten Bereich zu löschen.

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. Aus Sicherheitsgründen möchten Sie möglicherweise die Ausgabe von 'fdupes' in eine Datei drucken und dann die Textdatei überprüfen, um zu entscheiden, welche Datei gelöscht werden soll. Dies verringert die Wahrscheinlichkeit, dass Ihre Datei versehentlich gelöscht wird. Sie können Folgendes tun:

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

Hinweis: Sie können '/home' durch den gewünschten Ordner ersetzen. Verwenden Sie auch die Optionen '-r' und '-S', wenn Sie rekursiv bzw. Druckgröße suchen möchten.

9. Sie können die erste Datei aus jedem Satz von Übereinstimmungen weglassen, indem Sie die Option '-f' verwenden.

Zuerst Dateien des Verzeichnisses auflisten.

$ 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

und lassen Sie dann die erste Datei in jedem Satz von Übereinstimmungen weg.

$ 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. Überprüfen Sie die installierte Version von fdupes.

$ fdupes --version

fdupes 1.51

11. Wenn Sie Hilfe zu fdupes benötigen, können Sie den Schalter '-h' verwenden.

$ 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

Das ist jetzt für alle. Lassen Sie mich wissen, wie Sie bis jetzt doppelte Dateien unter Linux gefunden und gelöscht haben? Und teilen Sie mir auch Ihre Meinung zu diesem Dienstprogramm mit. Schreiben Sie Ihr wertvolles Feedback in den Kommentarbereich unten und vergessen Sie nicht, uns zu liken/teilen und uns zu helfen, uns zu verbreiten.

Ich arbeite an einem anderen Dienstprogramm namens fslint, um doppelte Dateien zu entfernen, werde bald posten und Sie werden es lieben zu lesen.

Verwandte Artikel: