Ich suche nach einer Möglichkeit, in OSX (Maverick, aber allgemeiner OSX) nach einer bestimmten Datei zu suchen. Insbesondere möchte ich Folgendes tun:
Bei einer Datei_001 möchte ich suchen, ob im Dateisystem eine Kopie dieser Datei vorhanden ist.
Nicht nur mit dem gleichen Namen, ich möchte, dass die Vergleichsmethode ein Hash-Algorithmus wie MD5, SHA usw. ist.
Die meisten "Sucher für doppelte Dateien", die ich ausprobiert habe, suchen nur nach allen Duplikaten in einem Laufwerk/System. Ich wäre stattdessen daran interessiert, eine Datei einzureichen und nach ihren Duplikaten zu suchen.
Weiß jemand, ob es ein solches Programm gibt? Vielleicht eine obskure Funktion von Spotlight?
Sie könnten auch verwenden fdupes
. Es gibt keine Option, um nach Duplikaten einer bestimmten Datei zu suchen, aber Sie können die Ausgabe einfach nach dem Dateinamen suchen:
fdupes -r1 .|grep filename
-r
rekursiv in Verzeichnisse und -1
gibt jede Gruppe doppelter Dateien in einer einzigen Zeile aus.
Weitere nützliche Beispiele:
fdupes -r .
findet alle doppelten Dateien im aktuellen Verzeichnis;
fdupes -r . -dN
löscht alle außer dem ersten Duplikat aus jeder Gruppe von Duplikaten;
fdupes -r dir1 dir2|grep dir1/|xargs rm
entfernt Duplikate in dir1
.
fdupes
Sie können mit installieren brew install fdupes
.
Sie können dies mit einigen Shell-Befehlen leicht selbst erstellen:
find ~ -type f -exec md5 -r '{}' \; > /tmp/md5.list
erstellt eine Liste von md5-Hashes über alle Ihre Dateien.
grep $(md5 -q FILE-TO-SEARCH) /tmp/md5.list
sucht nach dem md5-Hash von FILE-TO-SEARCH
Das Ausführen des ersten Befehls (insbesondere wenn Sie ihn über die gesamte Disc ausführen) wird jedoch lange dauern.
Wenn Sie nur nach einer Datei suchen möchten, können Sie auch verwenden
SIZE=$(stat -f '%z' FILE-TO-SEARCH)
MD5=$(md5 -q FILE-TO-SEARCH)
find ~ -type f -size ${SIZE}c | while read f; do
[[ $MD5 = $(md5 -q "$f") ]] && echo $f
done
Dies sollte funktionieren, wenn Sie die Größe und den Hash für FILE_001 in den Befehl einfügen.
198452 Bytes ist die Dateigröße, die ich verwendet habe, und der Datei-md5-Hash ist 3915dc84b4f464d0d550113287c8273b
find . -type f -size 198452c -exec md5 -r {} \; |
grep -o "3915dc84b4f464d0d550113287c8273b\ \(.*\)" | awk '{print $2}'
Die Ausgabe ist eine Liste von Dateien mit Pfadnamen relativ zu dem Verzeichnis, das an den find-Befehl gesendet wird.
Dieser Ansatz hat den Vorteil, dass nur Dateien gehasht werden, die der Größe Ihres Originals entsprechen, und nur Dateinamen ausgegeben werden, die dem Hash entsprechen.
Wenn Sie sich nicht mit Skripten herumschlagen möchten, können Sie sich mit Araxis Find Duplicate Files $10 im Mac App Store dem gewünschten Verhalten annähern . Es gibt auch eine 7-Tage-Demo auf ihrer Website. Find Duplicate Files sucht nach Duplikaten, indem der Hash für jede Datei berechnet wird.
Sie können das gewünschte Verhalten annähern, indem Sie einen Ordner mit der einzelnen Datei einrichten, die Sie betrifft, und dann die Ordner hinzufügen, in denen Sie suchen möchten. Dadurch werden auch andere Duplikate, falls vorhanden, in den Suchpfaden gemeldet.
Diese App hat viele nette Sortierfunktionen, die die Ergebnisse sehr einfach zu verstehen machen.
John D.