Ich denke, du könntest mit 3 Werkzeugen gehen: cmp ist besser für Binärdateien und Diff ist besser für Textdateien Für Binärdateien diff nur gemeldet, ob sie sich nicht unterscheiden. Diff funktioniert auch für Verzeichnisse. Jeder der ersten beiden könnte das schaffen, was man schweigend braucht. Diff verwendet den - q-Schalter und cmp benutzt den - s-Schalter, um dir nur einen Return-Code zu sagen: 0 wenn die beiden Dateien mit 1 übereinstimmen, wenn nicht. Cmp hat auch eine schöne Option zu vermeiden (Art von) Lesen der gesamten Datei (gut, wenn Sie große Dateien haben): Wenn Sie wissen, dass die Dateien in den ersten N Zeilen oder zwischen Zeile N und M können Sie tun (dh für Zeile N 10 und M 20): Ich habe md5sum zur Liste hinzugefügt, denn wenn du die Chance hast, die MD5-Prüfsumme zu berechnen, jedes Mal wenn du eine dieser Dateien editierst, dann könntest du nur das vergleichen, um schnell zu finden, ob sie übereinstimmen oder nicht. In diesem Fall gehe ich davon aus, dass du eine Menge Datei zum Vergleich hast. Antwortete Oct 25 10 at 9: 231.7 Binäre Dateien und erzwingen Text Vergleiche Wenn diff denkt, dass eine der beiden Dateien, die es verglichen wird, binär ist (eine Nicht-Textdatei), behandelt es normalerweise dieses Paar von Dateien, als ob das zusammengesetzte Ausgabeformat Wurde ausgewählt (siehe Brief) und berichtet nur, dass die Binärdateien unterschiedlich sind. Dies liegt daran, dass zeilenweise Vergleiche in der Regel nicht sinnvoll für Binärdateien sind. Das gilt nicht als Mühe, auch wenn die daraus resultierende Ausgabe nicht alle Unterschiede erfasst. Diff bestimmt, ob eine Datei Text oder Binär ist, indem man die ersten Bytes in der Datei überprüft, ist die genaue Anzahl der Bytes systemabhängig, aber es ist typischerweise mehrere tausend. Wenn jedes Byte in diesem Teil der Datei nicht null ist, betrachtet diff die Datei als Text, sonst betrachtet sie die Datei binär. Manchmal möchtest du vielleicht Gedanken machen, um Dateien zu betrachten, um Text zu sein. Zum Beispiel könnten Sie Textdateien vergleichen, die Nullzeichen enthalten. Diff würde fälschlicherweise entscheiden, dass es sich um Nicht-Textdateien handelt. Oder Sie können Dokumente vergleichen, die sich in einem Format befinden, das von einem Textverarbeitungssystem verwendet wird, das Nullzeichen verwendet, um eine spezielle Formatierung anzuzeigen. Sie können diff, um alle Dateien zu betrachten, um Textdateien zu sein, und vergleichen Sie sie Zeile für Zeile, indem Sie die Option --text (-a) verwenden. Wenn die Dateien, die Sie mit dieser Option vergleichen, nicht in der Tat Text enthalten, werden sie wahrscheinlich nur wenige Zeilenumbrüche enthalten, und die diff-Ausgabe besteht aus Hunks, die Unterschiede zwischen den langen Zeilen der beliebigen Zeichen enthalten, die die Dateien enthalten. Sie können auch diff nur zu melden, ob Dateien unterscheiden (aber nicht wie). Verwenden Sie dazu die Option --brief (-q). In Betriebssystemen, die zwischen Text - und Binärdateien unterscheiden, liest diff immer alle Daten als Text. Verwenden Sie die Option - Binary, um das Diff zum Lesen und Schreiben von Binärdaten zu erzwingen. Diese Option hat keine Auswirkung auf ein POSIX-kompatibles System wie GNU oder traditionelles Unix. Allerdings stellen viele Personalcomputer-Betriebssysteme das Ende einer Zeile mit einem Wagenrücklauf dar, gefolgt von einem Zeilenumbruch. Bei solchen Systemen ignoriert diff normalerweise diese Wagenrückführungen am Eingang und erzeugt sie am Ende jeder Ausgangszeile, aber mit der - Binary Option diff behandelt jeder Wagenrücklauf als nur ein weiteres Eingabezeichen und erzeugt keinen Wagenrücklauf an der Ende jeder Ausgangszeile. Dies kann beim Umgang mit Nicht-Text-Dateien nützlich sein, die mit POSIX-kompatiblen Systemen vertauscht werden sollen. Die - Streifen-Nachlauf-Cr verursacht Diff, um Eingabezeilen zu behandeln, die im Wagenrücklauf enden, gefolgt von einem Zeilenumbruch, als ob sie in einem einfachen Zeilenumbruch enden. Dies kann nützlich sein, wenn man Text vergleicht, der unvollständig von vielen Personalcomputersystemen importiert wird. Diese Option beeinflusst, wie Zeilen gelesen werden, was wiederum beeinflusst, wie sie verglichen und ausgegeben werden. Wenn du zwei Dateien Byte Byte vergleichen möchtest, kannst du das Programm cmp mit der Option --verbose (-l) verwenden, um die Werte jedes abweichenden Bytes in den beiden Dateien anzuzeigen. Mit GNU cmp. Sie können auch die Option - b oder --print-bytes verwenden, um die ASCII-Darstellung dieser Bytes anzuzeigen. Siehe Aufruf von cmp. für mehr Informationen. Wenn diff3 denkt, dass irgendeine der Dateien, die es vergleicht, binär ist (eine Nicht-Textdatei), so berichtet sie normalerweise einen Fehler, weil solche Vergleiche normalerweise nicht sinnvoll sind. Diff3 verwendet den gleichen Test wie diff, um zu entscheiden, ob eine Datei binär ist. Wie bei diff. Wenn die Eingabedateien einige Nichttext-Bytes enthalten, aber ansonsten wie Textdateien sind, kannst du diff3 dazu zwingen, alle Dateien als Textdateien zu betrachten und sie zeilenweise mit der Option - a oder --text zu vergleichen. Einer der Die häufigsten Möglichkeiten, festzustellen, ob zwei Dateien identisch sind (unter der Annahme, dass ihre Größen übereinstimmen) verwendet ein Programm, um einen Hash (im Wesentlichen einen Fingerabdruck) einer Datei zu erstellen. Die häufigsten sind md5sum und sha1sum. Wenn Sie viele Dateien haben, die Sie überprüfen müssen, z. B. wenn Sie ein Verzeichnis mit Dateien von einem System zum anderen übertragen, können Sie die Ausgabe vom ursprünglichen System in eine Datei umleiten, dann kann md5sum sha1sum diese Datei automatisch verwenden Sagen Sie, welche Dateien sind anders: beantwortet Apr 29 10 um 12:21 MD5 ist nicht immer eine zuverlässige dafür: diggsecurityhellip ndash Jon Cage Apr 29 10 um 12:30 Eigentlich ist MD5 zuverlässig für grundlegende Integritätsprüfungen. Es ist gerade nicht so kryptographisch stark, wie wir es einmal dachten. Wenn Sie sich Sorgen um Hacker machen, dann verwenden Sie MD5, aber wenn Sie nur wissen wollen, ob einige Dateien, die von einer CD kopiert wurden, beschädigt wurden oder wenn Ihr Compiler jedes Mal identische Dateien ausspuckt, ist MD5 mehr als ausreichend. Ndash Adam Batkin Apr 29 10 bei 12: 55 Ich bevorzuge VBinDiff. DHEX benutzt CPU auch im Leerlauf, ich denke, dass es die ganze Zeit neu zeichnet oder so. VBinDiff arbeitet nicht mit breiten Terminals. Aber die Adressen werden trotzdem mit breiten Terminals komisch, da man mehr als 16 Byte pro Zeile hat. Ndash Janus Troelsen Versuchen Sie diff in der folgenden Kombination von zshbash Prozess Substitution und colordiff in CLI: - y zeigt Ihnen Unterschiede Seite an Seite (optional) xxd ist CLI-Tool, um eine Hexdump-Ausgabe der Binärdatei zu erstellen File colordiff färbt diff-output (install via: sudo apt-get install colordiff) add - W200 zu diff für breiteres ausgabe, wenn dateien zu groß sind, add limit (zB - l1000) für jede xxd Methode, die für die Byte-Addition löscht. Ausgabe für Eine einzelne NUL-Byte-Entfernung am 100. Byte einer großen Datei: Wenn du auch die ASCII-Version des Charakters sehen möchtest: Tested on Ubuntu 14.04. Ich bevorzuge od über xxd weil: es ist POSIX. Xxd ist nicht (kommt mit Vim) hat die - An, um die Adresse Spalte ohne awk zu entfernen. - entfernt die Adressspalte. Dies ist wichtig, sonst würden alle Zeilen nach einer Byte-Addition abweichen. - w1 setzt ein Byte pro Zeile, so dass diff es verbrauchen kann. Es ist entscheidend, ein Byte pro Zeile zu haben, oder jede Zeile nach einer Löschung würde aus der Phase herauskommen und sich unterscheiden. Leider ist das nicht POSIX, sondern in GNU. - tx1 ist die Darstellung, die du willst, wechsle zu jedem möglichen Wert, solange du 1 Byte pro Zeile beibehältest. - v verhindert, dass Asterisk-Wiederholungsabkürzung, die die Diff-Paste - d - - verbindet, alle zwei Zeilen stört. Wir brauchen es, weil die Hex und ASCII in separate benachbarte Linien gehen. Ausgehend von: stackoverflowquestions8987257concatenating-every-other-line-mit-der-next verwenden wir parenthesis (), um bdiff zu definieren, anstatt den Umfang der inneren Funktion zu beschränken f. Siehe auch: stackoverflowquestions8426077how-to-define-a-function-inside-another-function-in-bash beantwortet Apr 4 15 at 20:31 Bei der Verwendung von Hexdumps und Text diff zum Vergleich Binärdateien, vor allem xxd. Die Hinzufügungen und Umzüge von Bytes werden zu Verschiebungen in der Adressierung, die es schwierig machen zu sehen. Diese Methode teilt xxd mit, keine Adressen auszugeben und nur ein Byte pro Zeile auszugeben, was wiederum genau zeigt, welche Bytes geändert, hinzugefügt oder entfernt wurden. Sie können die Adressen später finden, indem Sie nach den interessanten Sequenzen von Bytes in einer normaleren Hexdump (Ausgabe von xxd first. bin) suchen. Beantwortet Apr 22 15 um 12:10
No comments:
Post a Comment