MD5-Summe für jede Datei (mit ll)

MD5-Summe für jede Datei (mit ll)

Ich möchte eine Ausgabe wie diese: name size und hash:

myfile.txt 222M 24f4ce42e0bc39ddf7b7e879a
mynewfile.txt 353M a274613df45a94c3c67fe646

Denn ich nameallein sizehabe

ll -h | awk '{print $9,$10,$11,$12,$5}'

Aber wie kann ich hashan jede Datei gelangen? Ich habe Folgendes versucht:

ll -h | awk '{print $9,$10,$11,$12,$5}' | md5sum

Aber ich bekomme überhaupt nur einen Hash.

Antwort1

Sie sollten ls nicht analysieren, verwenden Sie stattdessen Folgendes:

for f in * .*; do
  [ -f "$f" ] && \
    printf "%s %s %s\n" "$f" $(du -h -- "$f" | cut -f1) $(md5sum -- "$f" | cut -d' ' -f1)
done
  • Die forSchleife durchläuft alle Dateien und Verzeichnisse im aktuellen Verzeichnis.
    • [ -f "$f" ]prüft, ob es sich um eine reguläre Datei handelt
    • printf "%s %s %s\n"druckt die Argumente im gewünschten Format.
    • "$f"Das erste Argument ist der Dateiname
    • du -h -- "$f" | cut -f1das zweite ist die Größe (für Menschen lesbar), aber nicht der Dateiname, cutschneidet alles außer dem ersten Feld weg
    • md5sum -- "$f" | cut -d' ' -f1Drittens die MD5-Summe, jedoch ohne den Dateinamen.

verwandte Informationen