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

Der schnellste Weg, um festzustellen, ob zwei Dateien unter Unix/Linux denselben Inhalt haben?

Ich mag, dass @Alex Howansky dafür 'cmp --silent' verwendet hat. Aber ich brauche sowohl positive als auch negative Antworten, also verwende ich:

cmp --silent file1 file2 && echo '### SUCCESS: Files Are Identical! ###' || echo '### WARNING: Files Are Different! ###'

Ich kann dies dann im Terminal oder mit ssh ausführen, um Dateien mit einer konstanten Datei zu vergleichen.


Schnell und sicher zwei beliebige Dateien vergleichen:

if cmp --silent -- "$FILE1" "$FILE2"; then
  echo "files contents are identical"
else
  echo "files differ"
fi

Es ist lesbar, effizient und funktioniert für alle Dateinamen einschließlich "` $()


Ich glaube cmp stoppt beim ersten Byte-Unterschied:

cmp --silent $old $new || echo "files are different"

Weil ich scheiße bin und nicht genug Reputationspunkte habe, kann ich diesen Leckerbissen nicht als Kommentar hinzufügen.

Aber wenn Sie den cmp verwenden Befehl (und müssen / wollen nicht ausführlich sein) können Sie einfach den Exit-Status abrufen. Gemäß cmp Manpage:

Wenn eine DATEI '-' ist oder fehlt, lesen Sie die Standardeingabe. Der Exit-Status ist 0, wenn die Eingaben gleich sind, 1, wenn sie unterschiedlich sind, 2, wenn Probleme auftreten.

Sie könnten also so etwas tun:

STATUS="$(cmp --silent $FILE1 $FILE2; echo $?)"  # "$?" gives exit status for each comparison

if [[ $STATUS -ne 0 ]]; then  # if status isn't equal to 0, then execute code
    DO A COMMAND ON $FILE1
else
    DO SOMETHING ELSE
fi

EDIT:Danke für die Kommentare an alle! Ich habe die Test-Syntax hier aktualisiert. Ich würde jedoch vorschlagen, dass Sie Vasilis Antwort verwenden, wenn Sie nach etwas Ähnlichem wie dieser Antwort in Lesbarkeit, Stil und Syntax suchen.


Linux
  1. Kopieren Sie Dateien im Linux-Terminal

  2. Verschieben Sie Dateien im Linux-Terminal

  3. Linux vs. Unix:Was ist der Unterschied?

  4. Haben Sie eine Kuh an der Linux-Befehlszeile

  5. So erhalten Sie den Unterschied (nur Ergänzungen) zwischen zwei Dateien in Linux

So bearbeiten Sie PDF-Dateien unter Linux auf die einfachste Art und Weise

So vergleichen Sie zwei Dateien im Linux-Terminal

Der schnellste Weg zum rekursiven Zählen von Dateien unter Linux

Der Zweck des Lost+Found-Ordners in Linux und Unix?

ls-Befehl unter Linux/UNIX

Was ist der schnellste Weg, um alle Dateien und Unterordner in einem Verzeichnis zu entfernen?