Di AWK:
{ sum += $1 }
END { print sum }
Jadi
du -b /tmp/* | awk '{ sum += $1 } END { print sum }'
Perhatikan bahwa hasilnya tidak akan benar jika direktori di bawah /tmp
memiliki subdirektori sendiri, karena du
menghasilkan total berjalan pada direktori dan turunannya.
du -s
akan menghitung jumlah untuk Anda dengan benar (pada semua subdirektori dan file di /tmp
, termasuk yang tersembunyi):
du -sb /tmp
dan du -c
akan menghitung jumlah direktori dan file yang terdaftar, juga dengan benar:
du -cb /tmp/*
Anda juga dapat menghasilkan jumlah total file yang dipilih dengan du -c
. Ini berfungsi bahkan jika argumen du
bukan direktori, apalagi du -s
:
$ du -sb file1 file2
17 file1
18 file2
$ du -cb file1 file2
17 file1
18 file2
35 total
BTW, untuk penggunaan interaktif saya sarankan menambahkan -h
opsi alih-alih -b
atau pengganda ukuran blok lainnya. Ini akan mencetak ukuran dalam format unit yang dapat dibaca manusia.
$ du -ch file1 file2
4.0K file1
4.0K file2
8.0K total
Sederhana saja, Anda dapat menggunakan:
du -b /tmp/* | awk 'BEGIN{i=0} {i=i+$1} END{print i}'
Jika Anda tidak menggunakan wildcard, jika Anda menggunakan nama direktori seperti /tmp
, maka Anda perlu menghindari entri terakhir karena keluaran du -b /tmp
adalah seperti:
size1 file1
size2 file2
size_total .
Jadi sekarang Anda harus menghindari entri terakhir ini, jadi gunakan:
du -b /tmp | awk 'BEGIN{i=0} {if( $2 != "." ){i=i+$1}} END{print i}'
Namun Anda juga dapat menggunakan -s
opsi, itu akan menghitung ringkasan untuk Anda maka Anda tidak perlu menambahkan nilainya, cukup cetak yang terakhir, yaitu:
du -s directory