Ich möchte eine MD5-Prüfsummenliste für alle Dateien in einem Verzeichnis erstellen.
Ich will cat filename | md5sum > ouptput.txt
. Ich möchte dies in einem Schritt für alle Dateien in meinem Verzeichnis tun.
Jede Hilfe wäre toll.
command-line
Walter Wayne Leutwyler
quelle
quelle
Antworten:
Sie können
md5sum
mehrere Dateinamen oder Bash-Erweiterungen übergeben:Wenn Sie Lust auf etwas haben, können Sie beispielsweise
find
die Dateien aufreißen und filtern sowie rekursiv arbeiten:quelle
md5sum
um die Dateien in Unterverzeichnissen zu bekommen, wobei das obigemd5sum *
Emittieren in die Unterverzeichnisebene geht, indem man sagt ... ist ein Verzeichnisfind -type f -exec md5sum '{}' +
und "find -type f -exec md5sum" {} "angegeben habe. Ich habe es geschafft. Danke :)openssl md5 * > checklist.txt
**
rekursiv ausgewertet wird (wie zsh), ist dies noch einfacher:md5sum **/* 2>/dev/null
Ein großartiges Programm zum Erstellen / Überprüfen von Prüfsummen ist Rhash. Es werden sogar SFV-kompatible Dateien erstellt und auch überprüft.
Es unterstützt MD4, MD5, SHA1, SHA512, CRC32 und viele andere.
Darüber hinaus kann es rekursives Erstellen (Option -r) wie md5deep oder sha1deep ausführen.
Zu guter Letzt können Sie die Ausgabe der Prüfsummendatei formatieren. zum Beispiel:
Gibt eine CSV-Datei mit dem vollständigen Pfad der Dateien aus, beginnend mit dem
/home
Verzeichnis.Ich finde es äußerst nützlich, auch die Option -e, Dateien umzubenennen, indem crc32 sum in name eingefügt wird.
Sie können "md5sum" mit "rhash" in den PhoenixNL72-Beispielen ändern.
quelle
Hier sind zwei ausführlichere Beispiele:
Erstellen Sie eine MD5-Datei in jedem Verzeichnis, das noch keine hat, mit absoluten Pfaden:
Erstellen Sie eine MD5-Datei in jedem Ordner, der noch keine hat: keine Pfade, nur Dateinamen:
Was sich zwischen 1 und 2 unterscheidet, ist die Art und Weise, wie die Dateien in der resultierenden md5-Datei dargestellt werden.
Die Befehle führen Folgendes aus:
Die Ausgabe dieses gesamten Skripts kann in eine Datei umgeleitet (.....; done> test.log) oder an ein anderes Programm weitergeleitet werden (z. B. grep). Die Ausgabe gibt nur an, welche Verzeichnisse übersprungen und welche verarbeitet wurden.
Nach einer erfolgreichen Ausführung erhalten Sie eine @ md5Sum.md5-Datei in jedem Unterverzeichnis Ihres aktuellen Verzeichnisses
Ich habe die Datei @ md5Sum.md5 genannt, damit sie in einer Samba-Freigabe oben im Verzeichnis aufgeführt wird.
Das Überprüfen aller @ md5Sum.md5-Dateien kann mit den folgenden Befehlen erfolgen:
Anschließend können Sie die Datei checklog.txt mit grep -v OK prüfen, um eine Liste aller Dateien zu erhalten, die sich unterscheiden.
Um eine @ md5Sum.md5 in einem bestimmten Verzeichnis neu zu generieren, löschen Sie zum Beispiel beim Ändern oder Hinzufügen von Dateien die Datei @ md5Sum.md5 oder benennen Sie sie um und führen Sie den Befehl generate erneut aus.
quelle
Ich bin auf dieses Problem gestoßen, und obwohl die obigen Lösungen elegant sind, wollte ich einen schnellen und schmutzigen Hack für diese Situation: 1 Verzeichnis mit Unterverzeichnissen, die eine Ebene tiefer liegen.
Geben Sie also das Verzeichnis in eine Shell ein und führen Sie Folgendes aus:
Dadurch werden alle Dateien im obersten Verzeichnis abgerufen, die Fehlerwarnung über die Unterverzeichnisse als Verzeichnisse entfernt und md5sums für den Inhalt des Unterverzeichnisses ausgeführt. Vorteil: leicht zu merken, macht genau das, was es tun soll. Ich bin immer verwirrt von der Suchsyntax und kann mich nicht mehr an sie erinnern. Es ist also nicht erforderlich, eine Schleife usw. durchzuführen, die sich mit Leerzeichen in Verzeichnisnamen befasst. Dieser eine Liner hat einwandfrei funktioniert. Keine robuste, leistungsstarke Lösung, die nicht für Unterverzeichnisse mit mehr als einer Ebene geeignet ist, sondern eine schnelle und einfache Lösung für das Problem.
quelle