Erzeugen Sie für jede Datei in einem Verzeichnis eine separate MD5-Datei und ÜBERSPRINGEN Sie dabei vorhandene

Erzeugen Sie für jede Datei in einem Verzeichnis eine separate MD5-Datei und ÜBERSPRINGEN Sie dabei vorhandene

Ich habe beispielsweise 4 TB mit Millionen von Dateien. Ich denke, es wäre schön, wenn ich für jede Datei eine einzelne MD5-Datei erstellen könnte.

ich lese Für jede .fastq-Datei in einem Verzeichnis eine separate .md5-Datei generieren? und so geändert, dass für JEDE einzelne Datei eine individuelle MD5-Datei erstellt wird.

sagen Sie: finden. -type f -name "*" -exec sh -c "md5sum {} > {}.md5" \;

Aber wie gesagt, ich habe 4 TB mit Millionen von Dateien, der Befehl ist möglicherweise nicht in 2 Tagen fertig und ich muss den PC herunterfahren.

Beim Fortsetzen wünschte ich, der obige Befehl könnte die Dateien überspringen, die bereits vorhandene MD5-Dateien haben (d. h. die berechneten).

Wie geht das? Natürlich rekursiv.

Danke.

Antwort1

Anstatt .md5für jede Datei eine Datei zu erstellen ("Millionen von Dateien") und damit Millionen von Festplattenclustern und Inodes zu verbrauchen, fügen Sie .md5die Signaturen für alle Dateien in eine große Datei ein (die Sie später bei Bedarf aufteilen können) (lesen Sie dazu man find;man xargs):

find . -type f \! -name '*.md5' -print0 | xargs -0 md5sum > md5sum.out
#   Separate filenames with \000^^^^^^^          ^ in case some have spaces
#              ^^^^^^^^^^^^^^^^ but NOT *.md5 files
#      ^^^^^^^ each file

verwandte Informationen