Mal so'n paar Ansätze:
Erst würde ich mal Checksummen statt direkter Vergleiche nehmen.
Code:
# 1) Alle Checksummen aller Dateien finden
# 2) Das Ergebnis zwischenspeichern
# 3) Dateinamen entfernen
# 4) Checksummen sortieren
# 5) mehrfach vorkommende Checksummen wegschreiben
find $HOME -type f -exec md5sum {} \; | tee zwischen.txt | \
awk '{print $1}' | sort +0 | uniq -d >mehrfach.txt
# 6) Jetzt alle Dateinamen der Checksummenduplikate ausgeben lassen
grep -f mehrfach.txt zwischen.txt | sort +0
Vorsicht: Leere Dateien sind wohl keine Duplikate: => find Option -size +1c
P. S.: Das Skript hat in meinem homeverzeichnis(10.000 Dateien) schon sehr lange(Volle CPU-Last. Athlon XP 1200) gedauert(bis die Geduld zu Ende ging). Ein (SuSE-)Linux hat >150.000(Bin bei 190.000 ohne Daten) Dateien komplett. 1.000 (gefundene Duplikate) X 10.000 (Zeilen in Zwischenergebnisdatei) = 10.000.000 Suchvorgänge.
Es tut wohl not das ganze irgendwie einzugrenzen.
---
Wenn Du jede Datei mit jeder anderen Vergleichen willst: ( 150.000 ^ 2 ) / 2 = 11.250.075.000 DATEIvergleiche. Das reicht als Beschäftigung bis .... ?
Viel Spass beim weiterbasteln
Tobias
Lesezeichen