Ich möchte einen Befehl find
ausführen, der eine bestimmte Liste von Dateien findet und dann diese Liste von Dateien durchläuft, um einige Operationen auszuführen. Ich möchte auch die Gesamtgröße aller Dateien in dieser Liste finden.Ermitteln der Gesamtgröße einer Liste von Dateien unter UNIX
Ich möchte die Liste der Dateien zuerst machen, dann machen Sie die anderen Operationen. Gibt es einen einfachen Weg, um nur die Gesamtgröße aller Dateien in der Liste zu melden?
Im Grunde versuche ich unten einen Einzeiler für die 'total_size' Variable im Code-Schnipsel zu finden:
#!/bin/bash
loc_to_look='/foo/bar/location'
file_list=$(find $loc_to_look -type f -name "*.dat" -size +100M)
total_size=???
echo 'total size of all files is: '$total_size
for file in $file_list; do
# do a bunch of operations
done
Sie können "\ n% s% p" verwenden '' printf in Ihrem 'find' Befehl die Namen + Größe zu zeigen. – fedorqui
@fedorqui Wenn ihre Version von 'find'' -printf' unterstützt. Eine Form von '-exec stat -f'% z '{} \; '(abhängig von der Implementierung von' stat 'in Ihrem System) würde ebenfalls funktionieren. – chepner
@fedorqui: außerdem müssten Sie dann die Dateinamen und Größen vor der for-Schleife aufteilen ... – sanmiguel