Website-Suche

fdupes – Ein Befehlszeilentool zum Suchen 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 Suchen und Entfernen doppelter Dateien ist eine mühsame Aufgabe, die Zeit und Geduld erfordert. Das Auffinden doppelter Dateien kann dank des Dienstprogramms „fdupes“ sehr einfach sein, wenn Ihr Computer mit GNU/Linux läuft.

Was ist fdupes?

Fdupes ist ein Linux-Dienstprogramm, das von Adrian Lopez in der Programmiersprache C geschrieben und unter MIT-Lizenz veröffentlicht wurde. Die Anwendung ist in der Lage, doppelte Dateien in den angegebenen Verzeichnissen und Unterverzeichnissen zu finden. Fdupes erkennen Duplikate, indem sie die MD5-Signatur von Dateien vergleichen und anschließend einen Byte-zu-Byte-Vergleich durchführen. 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 > Teilweiser MD5-Signaturvergleich > Vollständiger MD5-Signaturvergleich > Byte-zu-Byte-Vergleich.

Installieren Sie fdupes auf einem Linux

Die Installation der neuesten Version von fdupes (fdupes Version 1.51) ist so einfach wie die Ausführung 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 Standardpaketmanager yum wird ab Fedora 22 durch dnf ersetzt weiter…

Wie verwende ich den Befehl fdupes?

1. Zu Demonstrationszwecken erstellen wir einfach ein paar doppelte Dateien in einem Verzeichnis (z. B. tecmint):

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 mit dem Befehl ls, ob die Duplikate der Dateien erstellt wurden oder nicht.

$ 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 nach doppelten Dateien im Ordner 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. Suchen Sie mit der Option -r rekursiv in jedem Verzeichnis, einschließlich seiner Unterverzeichnisse, nach Duplikaten.

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

$ fdupes -r /home

Progress [37780/54747] 69%

4. Sehen Sie sich mit der Option -S die Größe der in einem Ordner gefundenen Duplikate an.

$ 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 der doppelten Dateien für jedes darin gefundene Verzeichnis und Unterverzeichnis anzeigen, indem Sie gleichzeitig die Optionen -S und -r verwenden , als:

$ 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. Anstelle der rekursiven Suche in einem Ordner oder allen Ordnern können Sie je nach Bedarf zwischen zwei 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 und gleichzeitig eine Kopie beizubehalten, können Sie die Option ‘-d’ verwenden. Bei der Verwendung dieser Option ist besondere Vorsicht geboten, da sonst möglicherweise wichtige Dateien/Daten verloren gehen und 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 zum Löschen aufgefordert werden, entweder einzeln oder in einem bestimmten Bereich oder alle auf einmal. Sie können einen Bereich wie unten auswählen, um Dateien eines bestimmten Bereichs 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. nach der Druckgröße suchen möchten.

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

Erste Liste der Dateien des Verzeichnisses.

$ 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 dann die erste Datei aus jedem Satz von Übereinstimmungen weglassen.

$ 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 gilt jetzt für alle. Lassen Sie mich wissen, wie Sie bisher unter Linux doppelte Dateien gefunden und gelöscht haben? und sagen Sie mir auch Ihre Meinung zu diesem Dienstprogramm. Geben Sie Ihr wertvolles Feedback in den Kommentarbereich unten ein und vergessen Sie nicht, uns zu liken/zu teilen und uns dabei zu helfen, uns zu verbreiten.

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