Linux-Tools, um doppelte Dateien zu finden?

13

Ich habe eine große und wachsende Anzahl von Textdateien, die alle recht klein sind (weniger als 100 Bytes). Ich möchte jedes mögliche Paar von Dateien und Notizen, die Duplikate sind, unterscheiden. Ich könnte ein Python-Skript schreiben, um dies zu tun, aber ich frage mich, ob es ein vorhandenes Linux-Befehlszeilentool (oder eine einfache Kombination von Tools) gibt, das dies tun würde.

Update (als Antwort auf den Kommentar von mfinni ): Die Dateien befinden sich alle in einem einzigen Verzeichnis, daher haben sie alle unterschiedliche Dateinamen. (Sie haben jedoch alle eine gemeinsame Dateinamenerweiterung, sodass Sie sie einfach mit einem Platzhalter auswählen können.)

Daryl Spitzer
quelle
Ich gehe davon aus, dass die Dateinamen keine Duplikate sind, nur die Inhalte?
Mfinni
pixelbeat.org/fslint Wenn Sie nach Inhalten über dem Link suchen, kann dies hilfreich sein. :)
Rajat

Antworten:

22

Da sind die Idioten . Aber ich benutze normalerweise eine Kombination vonfind . -type f -exec md5sum '{}' \; | sort | uniq -d -w 36

Hubert Kario
quelle
1
Diese Variante hat bei mir funktioniert: find . -name "*.csv" | xargs md5sum | sort | uniq -D -w 34 (Ich habe uniq -D verwendet und ich bevorzuge xargs, um -exec zu finden.)
Daryl Spitzer
+1 Mir war kein fdupes bekannt, dieses Tool sieht sehr nützlich aus.
Zoredache
3
@Daryl: Bei xargsDateinamen mit Leerzeichen funktioniert eine solche Verwendung nicht, bei Verwendung -execjedoch. Die Verwendung -type fals zusätzliches Argument für find(kann zusammen mit verwendet werden -name) schränkt die Suche auf Dateien ein.
Fuenfundachtzig
+1 für fdupes, da es auch für große Binärdateien schnell ist.
Bengt
In seltenen Fällen funktionierte xargs nicht (stürzt nach einer bestimmten Anzahl verarbeiteter Dateien ab), fand aber -exec nicht, das die ganze Zeit geweckt hat. @fuenfundachtzig, man kann xargs -0 --delimiter = "\ n" benutzen, um diese Art von Dateien zu handhaben.
Ychaouche
6

Nun, es gibt FSlint - was ich für diesen speziellen Fall nicht verwendet habe, aber ich sollte in der Lage sein, damit umzugehen: http://en.flossmanuals.net/FSlint/Introduction

Schwindler
quelle
+1 für FSlint. Sehr intuitive Benutzeroberfläche und leistungsstarke Anpassungsoptionen.
Glutanimate
3

Sie möchten mit ziemlicher Sicherheit nicht jedes Dateipaar unterscheiden. Sie möchten wahrscheinlich so etwas wie md5sums verwenden, um alle Prüfsummen aller Dateien abzurufen und diese an ein anderes Tool weiterzuleiten, das nur doppelte Prüfsummen zurückmeldet.

Zoredache
quelle
2
Sie können die Anzahl der berechneten MD5-Summen reduzieren, indem Sie MD5-Summen nur für Dateien mit einer Größe berechnen, für die es mehr als eine Datei dieser Größe gibt. Für alle Dateien, die eine eindeutige Größe in Byte haben, benötigen Sie keine MD5-Summe, da sie keine Duplikate von irgendetwas sein können.
Tomsv