GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Vergleichen von zwei Dateien im Linux-Terminal

Wenn Sie vim installiert haben, versuchen Sie Folgendes:

vimdiff file1 file2

oder

vim -d file1 file2

Sie werden es fantastisch finden.


Versuchen Sie es mit sdiff (man sdiff )

sdiff -s file1 file2

Wenn Sie den Diff-Ausgabestil von git diff bevorzugen , können Sie es mit dem --no-index verwenden Flag zum Vergleichen von Dateien, die sich nicht in einem Git-Repository befinden:

git diff --no-index a.txt b.txt

Unter Verwendung einiger Dateien mit jeweils etwa 200.000 Dateinamenszeichenfolgen habe ich einen Benchmark durchgeführt (mit dem integrierten time Befehl) diesen Ansatz im Vergleich zu einigen der anderen Antworten hier:

git diff --no-index a.txt b.txt
# ~1.2s

comm -23 <(sort a.txt) <(sort b.txt)
# ~0.2s

diff a.txt b.txt
# ~2.6s

sdiff a.txt b.txt
# ~2.7s

vimdiff a.txt b.txt
# ~3.2s

comm scheint bei weitem am schnellsten zu sein, während git diff --no-index scheint der schnellste Ansatz für die Ausgabe im Diff-Stil zu sein.

Aktualisierung 25.03.2018 Sie können den --no-index tatsächlich weglassen -Flag, es sei denn, Sie befinden sich in einem Git-Repository und möchten nicht nachverfolgte Dateien in diesem Repository vergleichen. Aus den Manpages:

Dieses Formular dient dazu, die angegebenen zwei Pfade im Dateisystem zu vergleichen. Sie können die Option --no-index weglassen, wenn Sie den Befehl in einem von Git kontrollierten Arbeitsbaum ausführen und mindestens einer der Pfade außerhalb des Arbeitsbaums zeigt, oder wenn Sie den Befehl außerhalb eines von Git kontrollierten Arbeitsbaums ausführen.


Sortieren Sie sie und verwenden Sie comm :

comm -23 <(sort a.txt) <(sort b.txt)

comm vergleicht (sortierte) Eingabedateien und gibt standardmäßig drei Spalten aus:Zeilen, die eindeutig für a sind, Zeilen, die eindeutig für b sind, und Zeilen, die in beiden vorhanden sind. Durch Angabe von -1 , -2 und/oder -3 Sie können die entsprechende Ausgabe unterdrücken. Daher comm -23 a b listet nur die Einträge auf, die eindeutig für a sind. Ich verwende den <(...) Syntax, um die Dateien im laufenden Betrieb zu sortieren, wenn sie bereits sortiert sind, brauchen Sie dies nicht.


Linux
  1. Kopieren Sie Dateien im Linux-Terminal

  2. Benennen Sie eine Datei im Linux-Terminal um

  3. So komprimieren und dekomprimieren Sie Dateien unter Linux

  4. So finden Sie Dateien mit dem fd-Befehl in Linux

  5. Hochladen von Dateien in das S3-Konto über die Linux-Befehlszeile

So finden Sie Dateien über die Befehlszeile im Linux-Terminal

8 Methoden zum gleichzeitigen Umbenennen mehrerer Dateien in Linux

So zeigen Sie zwei Dateien nebeneinander in Linux an

So vergleichen Sie zwei Dateien im Linux-Terminal

So kopieren Sie Dateien und Verzeichnisse im Linux-Terminal

Verwenden des Diff-Befehls zum Vergleichen zweier Dateien im Linux-Terminal