So prüfen Sie, ob zwei Verzeichnisse den gleichen Inhalt haben

So prüfen Sie, ob zwei Verzeichnisse den gleichen Inhalt haben

Wie kann man einfach überprüfen, ob zwei verschiedene Verzeichnisse genau denselben Inhalt haben?

Antwort1

Dieses Ziel kann durch eine Kombination aus find, , und einer Reihe von Pipes erreicht werden:sha1sum

find /path/to/files -type f -print0 | sort -z | xargs -0 sha1sum | cut -c1-40 | sha1sum

Sie erhalten eine Ausgabe wie:

98f3a7c54a8f51dd86506a26d4d3bd90e6e4b821  -

Notiz:Der abschließende Bindestrich kann natürlich ignoriert werden.

Führen Sie dies für die Pfade aus, die Sie überprüfen möchten, und Sie werden sehen, ob zwei Verzeichnisse gleich sind oder nicht. Wenn dies nicht der Fall ist, können Sie mit der Bearbeitung des Befehls beginnen, um die unterschiedlichen Dateien zu finden. Eine einfache, wenn auch zeitaufwändige Möglichkeit hierfür wäre, das zu entfernen | cut -c1-40 | sha1sum, wodurch jede Datei und ihr entsprechender SHA1-Hash aufgelistet werden.

Wie funktioniert das?

  Erläuterung
find /path/to/files gibt eine Liste der Elemente aus dem /path/to/filesVerzeichnis zurück
-type f nur Dateien einschließen
-print0 druckt den vollständigen Dateinamen auf der Standardausgabe, gefolgt von einem Nullzeichen
| und dann
sort -z Sortieren Sie die Liste, indem Sie als Zeilentrennzeichen null anstelle eines Zeilenumbruchs verwenden.
| und dann
xargs -0 sha1sum führe jeden Wert aus der Liste durchsha1sum
| und dann
cut -c1-40 nehmenNurdie ersten 40 Zeichen (die Länge eines sha1
| und dann
sha1sum Erzeugen Sie einen SHA1-Hash der Liste der SHA1s.

verwandte Informationen