Ich habe zwei Dateien:
oldlist
- Diese enthält eine Liste von Dateien und einen MD5-Hash für jede Datei. Dies wurde vor einem Jahr generiert.newlist
- Dies enthält auch eine Liste von Dateien und einen MD5-Hash für jede Datei. Einige Dateien wurden jedoch geändert (z. B. der MD5-Hash ist anders), und einige neue Dateien wurden hinzugefügt.
Ich würde gerne alle Unterschiede zwischen oldlist
und sehen newlist
, aber ich möchte alle Dateien ignorieren, in denen es keine gibt oldlist
.
Das heißt, neue Dateien interessieren mich nicht. Ich möchte nur die md5-Hashes für jede alte Datei vergleichen, damit ich sehen kann, ob sich Dateien im letzten Jahr geändert haben.
Ich habe diff und comm ausprobiert , aber noch keine Lösung gefunden.
quelle
Wenn ich Ihre Frage richtig verstanden hätte, könnte ich
comm
tatsächlich tun, was Sie wollen. Ich würde vorschlagen, nachzuschauencomm --help
spezifisch
so
comm newFile oldFile -1 -3
wird das tun , was Sie wollen.quelle
Angenommen, die Dateien sehen aus wie (durch Leerzeichen getrennt):
Einfache Lösung:
Und dann können Sie einfach die beiden Dateien vergleichen (nach dem Sortieren):
quelle
Nur als Alternative habe ich immer "
sdiff -s
" zum Vergleichen von Dateilisten oder MD5-Summen verwendet.Angenommen, die Dateien sind normale md5sum-Ausgaben "
md5hash filename
". Dann entweder:Brechen diese nach unten:
sdiff -s
: supress gemeinsamen Leitungen sind so exakte Übereinstimmungen ignoriert. Shows|
,<
,>
für Unterschiede.<(sort oldfile)
: sortiert den Befehl vor dem sdiff.grep -v ">"
: Neue Dateieinträge ignorieren. Funktioniert nur, wenn Sie keinen>
Dateinamen haben, was ohnehin unwahrscheinlich ist.Die Breite von
sdiff
kann geändert werden, um längere Linien anzuzeigen-w 100
.quelle