Suchen Sie nach RARs mit doppeltem Inhalt

0

Ich benötige ein Hilfsprogramm, um RAR-Dateien zu finden, die doppelte Daten enthalten (dh Dateien innerhalb der RAR, die den gleichen Hash haben, aber unterschiedliche Namen haben können).

Ich kann die RARs öffnen und sehe, dass die CRCs gleich sind, aber ich hatte gehofft, dass ein automatisierterer Prozess in großen Mengen (Hunderte von Dateien) funktioniert.

Das Hashing der gesamten RAR-Datei hilft nicht, da die darin enthaltene Datei unterschiedliche Namen haben kann oder das Archiv auf verschiedenen Ebenen komprimiert werden kann.

Bei Bedarf würde ein Dienstprogramm, das den Inhalt der RARs extrahiert und dann vergleicht, funktionieren, wird jedoch nicht bevorzugt.

Ich würde ein kostenloses Dienstprogramm für Windows bevorzugen, aber ein kostenpflichtiges Dienstprogramm oder ein Dienstprogramm für Linux wäre akzeptabel.

Scott McClenning
quelle

Antworten:

1

Sie könnten wahrscheinlich alles in einem Schritt zum Laufen bringen, aber es könnte einfacher sein, so etwas zu tun (Linux):

for i in *.rar ; do  unrar l $i | tail -n+8 | head -n-3 | awk -v val=$i '{ printf("\"%s\" \"%s\" \"%s\"\n",val,$1,$8)}' >> rarfiles; done

Dadurch werden alle Dateien im aktuellen Verzeichnis durchsucht und alle Dateien in RARS in eine Datei namens RARFILES ausgegeben. Sie sieht folgendermaßen aus:

"rar name" "filename" "crc" 

Die Befehle "head" und "tail" entfernen lediglich die Kopf- und Fußzeile von der unrar-Ausgabe. Dann extrahiert awk das erste und achte Feld, $ i (der rar-Dateiname) wird als Parameter über -v übergeben, damit wir es mit der Ausgabe ausgeben können.

Dann

 cat rarfiles | sort -k3,3 | uniq -D -f2

Dies zeigt die Dupes an. Die Sortierparameter besagen, dass das dritte Feld (crc) sortiert werden soll, und uniq -D besagt, dass nur doppelte Zeilen angezeigt werden sollen, wobei die ersten beiden Felder ignoriert werden (so dass "rar name" und "filename" übersprungen werden und nur Dupes angezeigt werden, die das haben gleiche CRC.

Paul
quelle
Die Befehlszeilen sind bis auf eine Sache großartig. Wenn die RAR-Datei oder die Dateien in der RAR-Datei Leerzeichen enthalten, ist beim Ausführen des Befehls ein Problem aufgetreten. Wissen Sie, wie Sie das umgehen können? Danke noch einmal.
Scott McClenning