Dateinamen + MD5-Checksumme + Dateigröße zeilenweise ausgeben

X

xtian_82

Jungspund
Hallo!

Habe folgendes Problem:
Ich möchte mittels find das PWD durchsuchen und zu jeder regulären Datei deren Pfad sowie deren Größe und deren MD5-Checksumme ausgeben. Was ich momentan habe ist für Pfad und MD5:
Code:
find . -type f -print0 | xargs -0 md5 | awk '{ print $2 " "$4}'
und für Pfad und Größe:
Code:
find . -type f -print0 | xargs -0 ls -s
Jetzt ist meine Frage, wie ich das am besten kombinieren kann.
Ich will am Ende eine zeilenweise Ausgabe der Form "<Pfad> <MD5 Sum> <Größe>" haben.

Vielen Dank!
 
Hallo
Pack es alles in eine while - read - Schleife und nutze die Optionen von find.

BTW Welche Shell und welches OS?
Daher: Spekulativ für die Bash:
Code:
find . -type f -printf "%s\t%p\n"
|while read SIZE FILE;do 
echo "$(dirname "$FILE") $(echo "$FILE"|md5sum) $SIZE Byte";
done

Wolfgang
 
Vielleicht noch folgende Ersetzung, wenn man auf absolute Pfade steht. (Allerdings sehr bash spezifisch...)
Statt
Code:
$(dirname "$FILE")
einfach
Code:
${FILE/#./$PWD}
 
Danke Wolfgang, hat mir sehr geholfen!

Sorry wegen der fehlenden Angaben: Ich verwende die BASH unter UNIX (Darwin). (Btw. "find" hat unter UNIX keine Option "-printf" und "md5sum" gibt es standardmäßig auch nicht.)
Habe es jetzt folgendermaßen umgesetzt:
Code:
find . -type f | while read FILE; do echo "$FILE" $(md5 "$FILE" | awk '{print $4}') $(ls -s "$FILE" | awk '{print $1}'); done
Außerdem habe ich mich wohl mißverständlich ausgedrückt: Ich will den kompletten Pfad inkl. Dateinamen ausgeben.
Aber der obige Code macht jetzt genau, was ich will.
Danke nochmal!

EDIT:
PS: Danke auch an Gott_in_schwarz! Habe ich zwar momentan nicht gebraucht ('tschuldigung nochmal für meine unklare Ausdrucksweise), aber auf jeden Fall mal wieder was dazugelernt.
 
Zuletzt bearbeitet:

Ähnliche Themen

Prblem mit zeilenweises auslesen von Datei und schreiben nach mysql

verzeichniss suche funktioniert nicht

Problem mit HSPA+ Modem Huawei E353 - Installation unmöglich?

rsync: Quelle größer als Ziel => "Archiv" aufteilen/splitten

ausgabe von find1 zu find2 übergeben

Zurück
Oben