
Ich möchte Verzeichnisse mit Binärdateien vergleichen. Eigentlich interessiert mich nicht, was die tatsächlichen Unterschiede zwischen den Dateien sind, sondern ob es einen Unterschied gibt (und welche Dateien sich unterscheiden). Früher habe ich verwendet meld
, aber damit kann man keine Binärdateien vergleichen.
Welches Dateivergleichstool kann das?
NOTIZ:Dabei spielt es keine Rolle, ob es sich um ein grafisches Tool handelt oder ob es nur über eine Befehlszeile verfügt.
Antwort1
Dies lässt sich ganz einfach mit erledigen diff
. Zum Beispiel:
$ ls -l foo/
total 2132
-rwxr-xr-x 1 terdon terdon 1029624 Nov 18 13:13 bash
-rwxr-xr-x 1 terdon terdon 1029624 Nov 18 13:13 bash2
-rwxr-xr-x 1 terdon terdon 118280 Nov 18 13:13 ls
$ ls -l bar/
total 1124
-rwxr-xr-x 1 terdon terdon 1029624 Nov 18 13:14 bash
-rwxr-xr-x 1 terdon terdon 118280 Nov 18 13:14 ls
$ diff bar/ foo/
Only in foo/: bash2
Im obigen Beispiel enthalten die Verzeichnisse foo/
und bar/
Binärdateien und bash2
liegen nur in foo/
.
Sie könnten also etwas Einfaches wie das Folgende ausführen:
$ diff bar/ foo/ && echo "The directories' contents are identical"
Dadurch werden Ihnen die unterschiedlichen Dateien angezeigt, falls vorhanden, oder es wird „Der Inhalt der Verzeichnisse ist identisch“ ausgegeben, falls dies der Fall ist. Um auch Unterverzeichnisse und alle darin enthaltenen Dateien zu vergleichen, verwenden Sie diff -r
. Kombinieren Sie es mit , -q
um die Ausgabe für Textdateien zu unterdrücken.
Antwort2
cmp
Sie können zwei Dateien mit dem Befehl vergleichen
Verwendung:
cmp file1 file2
Es wird die Anzahl der Bytes Differenz und die Zeilennummer geben
Antwort3
Ein vollständiger Vergleich, der identische, unterschiedliche und nur in dem einen oder anderen Ordner bzw. Unterordner vorhandene Elemente anzeigt:
diff -rqs bar/ foo/
(Sie erhalten für jede Datei eine Ausgabe, die Angabe „Verzeichnisse identisch“ ist nicht erforderlich.)