du
tidak akan meringkas jika Anda meneruskan daftar file ke sana.
Sebagai gantinya, kirimkan output ke cut
dan biarkan awk
jumlahkan. Jadi, Anda dapat mengatakan:
find . -mtime +180 -exec du -ks {} \; | cut -f1 | awk '{total=total+$1}END{print total/1024}'
Perhatikan bahwa opsi -h
untuk menampilkan hasil dalam format yang dapat dibaca manusia telah diganti dengan -k
yang setara dengan ukuran blok 1K. Hasilnya disajikan dalam MB (lihat total/1024
di atas).
@PeterT benar. Hampir semua jawaban ini memanggil perintah (du) untuk setiap file, yang sangat intensif sumber daya dan lambat serta tidak perlu. Cara termudah dan tercepat adalah ini:
find . -type f -mtime +356 -printf '%s\n' | awk '{total=total+$1}END{print total/1024}'
Mengapa bukan ini?
find /path/to/search/in -type f -mtime +180 -print0 | du -hc --files0-from - | tail -n 1