du
würde nicht zusammenfassen, wenn Sie ihm eine Liste von Dateien übergeben.
Leiten Sie stattdessen die Ausgabe an cut
weiter und lassen Sie awk
Fass es zusammen. Sie können also sagen:
find . -mtime +180 -exec du -ks {} \; | cut -f1 | awk '{total=total+$1}END{print total/1024}'
Beachten Sie, dass die Option -h
um das Ergebnis in menschenlesbarem Format anzuzeigen, wurde durch -k
ersetzt was einer Blockgröße von 1K entspricht. Das Ergebnis wird in MB dargestellt (siehe total/1024
oben).
@PeterT hat Recht. Fast alle diese Antworten rufen einen Befehl (du) für jede Datei auf, was sehr ressourcenintensiv, langsam und unnötig ist. Der einfachste und schnellste Weg ist dieser:
find . -type f -mtime +356 -printf '%s\n' | awk '{total=total+$1}END{print total/1024}'
Warum nicht das?
find /path/to/search/in -type f -mtime +180 -print0 | du -hc --files0-from - | tail -n 1