du
non riassumerebbe se gli passi un elenco di file.
Invece, reindirizza l'output a cut
e let awk
riassumere. Quindi puoi dire:
find . -mtime +180 -exec du -ks {} \; | cut -f1 | awk '{total=total+$1}END{print total/1024}'
Nota che l'opzione -h
per visualizzare il risultato in un formato leggibile dall'uomo è stato sostituito da -k
che equivale alla dimensione del blocco di 1K. Il risultato è presentato in MB (vedi total/1024
sopra).
@PeterT ha ragione. Quasi tutte queste risposte invocano un comando (du) per ogni file, che richiede molte risorse, è lento e non necessario. Il modo più semplice e veloce è questo:
find . -type f -mtime +356 -printf '%s\n' | awk '{total=total+$1}END{print total/1024}'
Perché non questo?
find /path/to/search/in -type f -mtime +180 -print0 | du -hc --files0-from - | tail -n 1