Beberapa versi du
mendukung argumen --apparent-size
untuk menunjukkan ukuran yang jelas alih-alih penggunaan disk. Jadi perintah Anda adalah:
du -hs --apparent-size
Dari halaman manual untuk du yang disertakan dengan Ubuntu 12.04 LTS:
--apparent-size
print apparent sizes, rather than disk usage; although the
apparent size is usually smaller, it may be larger due to holes
in (`sparse') files, internal fragmentation, indirect blocks,
and the like
Berikut adalah skrip yang menampilkan ukuran direktori yang dapat dibaca manusia menggunakan alat standar Unix (POSIX).
#!/bin/sh
find ${1:-.} -type f -exec ls -lnq {} \+ | awk '
BEGIN {sum=0} # initialization for clarity and safety
function pp() {
u="+Ki+Mi+Gi+Ti+Pi+Ei";
split(u,unit,"+");
v=sum;
for(i=1;i<7;i++) {
if(v<1024) break;
v/=1024;
}
printf("%.3f %sB\n", v, unit[i]);
}
{sum+=$5}
END{pp()}'
misalnya:
$ ds ~
72.891 GiB
Dengan asumsi Anda memiliki du
dari GNU coreutils, perintah ini harus menghitung ukuran total yang terlihat dari jumlah file reguler yang berubah-ubah di dalam direktori tanpa batasan jumlah file yang berubah-ubah:
find . -type f -print0 | du -scb --files0-from=- | tail -n 1
Tambahkan -l
opsi untuk du
jika ada beberapa file hardlink di dalamnya, dan Anda ingin menghitung setiap hardlink secara terpisah (secara default du
menghitung beberapa hardlink hanya sekali).
Perbedaan paling penting dengan du -sb
biasa adalah du
rekursif itu juga menghitung ukuran direktori, yang dilaporkan berbeda oleh sistem file yang berbeda; untuk menghindari ini, find
perintah digunakan untuk meneruskan hanya file biasa ke du
. Perbedaan lainnya adalah bahwa symlink diabaikan (jika harus dihitung, find
perintah harus disesuaikan).
Perintah ini juga akan menghabiskan lebih banyak memori daripada du -sb
biasa , karena menggunakan --files0-from=FILE
membuat du
menyimpan perangkat dan nomor inode dari semua file yang diproses, berbeda dengan perilaku default yang hanya mengingat file dengan lebih dari satu tautan keras. (Ini bukan masalah jika -l
opsi digunakan untuk menghitung hardlink berkali-kali, karena satu-satunya alasan untuk menyimpan perangkat dan nomor inode adalah untuk melewati file hardlink yang telah diproses.)
Jika Anda ingin mendapatkan representasi ukuran total yang dapat dibaca manusia, cukup tambahkan -h
opsi (ini berfungsi karena du
dipanggil hanya sekali dan menghitung ukuran total itu sendiri, tidak seperti beberapa jawaban lain yang disarankan):
find . -type f -print0 | du -scbh --files0-from=- | tail -n 1
atau (jika Anda khawatir tentang beberapa efek dari -b
kemudian diganti oleh -h
)
find . -type f -print0 | du -sc --apparent-size -h --files0-from=- | tail -n 1