diff-Dateien innerhalb der zip ohne entpacken
Gibt es eine Möglichkeit, durchführen diff operetion auf zwei Dateien in zwei Reißverschlüssen ohne Extraktion? Falls nicht - jeder andere Problemumgehung zu vergleichen, ohne Sie zu extrahieren?
Dank.
- Wollen Sie nur wissen, ob die beiden Dateien unterscheiden sich oder wollen Sie ein visual diff ?
- Wenn Sie wissen wollen, ob Sie anders sind, dann verwenden Sie
sha512 filename1
undsha512 filename2
und sehen, ob die Ausgabe ist die gleiche.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Kombination der Antworten so weit, das folgende bash-Funktion vergleicht die Dateilisten aus den zip-Dateien. Die Einträge enthalten ausführliche Ausgabe (
unzip -v
), so Prüfsummen verglichen werden können. Ausgabe sortiert nach Dateinamen (sort -k8
) zu ermöglichen, side-by-side-Vergleich und die Ausgabe von diff ausgebaut (W200
), so dass die Dateinamen sichtbar sind int er side-by-side-Ansicht.Diese können Hinzugefügt werden, um Ihre
~/.bashrc
- Datei verwendet werden, aus einer Konsole. Es kann verwendet werden, mitzipdiff a.zip b.zip
. Umleiten der Ausgabe zu weniger oder Umleitung in eine Datei ist hilfreich für große zip-Dateien.--suppress-common-lines
, wie vorgeschlagen, in einem anderen Kommentar weiter unten.unzip -l
Liste wird der Inhalt einer zip-Datei. Sie kann dann passieren, dassdiff
in der üblichen Art und Weise, wie Sie hier erwähnt: https://askubuntu.com/questions/229447/how-do-i-diff-the-output-of-two-commandsSo zum Beispiel, wenn Sie hatte zwei zip-Dateien:
Kann
diff -y <(unzip -l foo.zip) <(unzip -l bar.zip)
zu tun, ein side-by-side diff den Inhalt zweier Dateien.Hoffe, das hilft!
--suppress-common-lines
flag zeigt nur die Zeilen, die sich unterscheiden, funktionierte wirklich gut für mich:diff -y <(unzip -l foo.zip) <(unzip -l bar.zip) --suppress-common-lines
function zipdiff() { diff -y <(unzip -l $1) <(unzip -l $2) --suppress-common-lines; }
, und das funktioniert einwandfrei für das, was ich versuche zu tun.Wenn Sie wollen
diff
zwei Dateien (wie in den Unterschied sehen) Sie haben, Sie zu extrahieren - wenn auch nur Speicher!!!Um zu sehen, diff zwei Dateien in zwei Reißverschlüssen können Sie so etwas tun (keine Fehlerüberprüfung oder was auch immer):
Hinweis:
unzip -p
extrahiert Dateien zu pipe (stdout).Wenn Sie nur wissen wollen, ob die Dateien unterschiedlich sind, können Sie überprüfen Sie Ihre Prüfsummen mit
Hinweis:
-v
bedeutet verbose und-l
Liste Inhalt)Im Beispiel oben können Sie sehen, dass die Prüfsummen (CRC-32) unterschiedlich sind.
Sie könnten auch interessiert sein in diesem Projekt:
https://github.com/nhnb/zipdiff
Wollte ich die eigentlichen Unterschiede zwischen den Dateien in den zips in ein lesbares format. Hier ist eine bash-Funktion, die ich geschrieben habe für diesen Zweck die Verwendung von git. Dieser hat eine gute UX wenn Sie bereits mit git als Teil des normalen workflow und Lesen können git-diffs.
Wenn Sie brauchen nur zu überprüfen, ob die Dateien gleich sind, Sie können vergleichen, eine CRC32-Prüfsumme, die gespeichert werden im Archiv der lokalen header-Felder/zentrales Verzeichnis.