.png)
Ich möchte eine Ausgabe wie diese: name
size
und hash
:
myfile.txt 222M 24f4ce42e0bc39ddf7b7e879a
mynewfile.txt 353M a274613df45a94c3c67fe646
Denn ich name
allein size
habe
ll -h | awk '{print $9,$10,$11,$12,$5}'
Aber wie kann ich hash
an 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
for
Schleife durchläuft alle Dateien und Verzeichnisse im aktuellen Verzeichnis.[ -f "$f" ]
prüft, ob es sich um eine reguläre Datei handeltprintf "%s %s %s\n"
druckt die Argumente im gewünschten Format."$f"
Das erste Argument ist der Dateinamedu -h -- "$f" | cut -f1
das zweite ist die Größe (für Menschen lesbar), aber nicht der Dateiname,cut
schneidet alles außer dem ersten Feld wegmd5sum -- "$f" | cut -d' ' -f1
Drittens die MD5-Summe, jedoch ohne den Dateinamen.