Bagaimana saya bisa menghitung ukuran direktori?

181

Bagaimana cara mengetahui ukuran suatu direktori? Termasuk subdirektori dan file.

Juanjo Conti
sumber

Jawaban:

230
du -s directory_name

Atau untuk mendapatkan hasil yang bisa dibaca manusia:

du -sh directory_name

The -spilihan berarti bahwa hal itu tidak akan daftar ukuran untuk setiap subdirektori, hanya ukuran total.

sepp2k
sumber
7
Sebenarnya du's Unit default adalah blok 512-byte sesuai dengan POSIX, dan kilobyte di Linux (kecuali variabel lingkungan POSIXLY_CORRECTdiatur) atau dengan du -k.
Gilles
3
@Gilles: Tangkapan bagus. Saya telah menghapus bit "jumlah byte" dari jawaban saya.
sepp2k
1
bekerja seperti yang ditentukan
skidadon
1
jika direktori sangat besar dan memiliki banyak subdirektori, dibutuhkan banyak waktu ... hampir 1 menit .. apakah itu normal? apakah ada cara untuk mendapatkan ukuran lebih cepat?
yeahman
2
Saya perlu menghitung ukuran folder "tas" saya, du -sh bagbekerja dengan sempurna!
António Almeida
7

Meskipun menggunakan paket terpisah seperti ncdu dapat bekerja dengan baik, perbandingan yang sama dari banyak folder dapat dilakukan, sampai taraf tertentu, dengan hanya memberikan du daftar folder untuk ukuran. Misalnya untuk membandingkan direktori tingkat atas pada sistem Anda ...

cd /    
sudo du -sh ./*
NBerkembang
sumber
2
Lebih sederhana lagi,du -sh /*
roaima
7

GNU dumengambil -bopsi.

Lihat manhalaman dan infohalaman untuk bantuan lebih lanjut:

-b, --bytessetara dengan--apparent-size --block-size=1

pengguna2573436
sumber
1
du -csh

-c menghasilkan total besar

Kalpesh Soni
sumber
1
Itu -ctidak masuk akal untuk digunakan bersama dengan -s, kan? -shanya menampilkan ukuran direktori yang ditentukan, yaitu ukuran total direktori.
Andreas Storvik Strauman
1

Mencoba

du -hax --max-depth=1 / | grep '[0-9]G' | sort -nr

Ini membantu menemukan direktori besar untuk kemudian disaring menggunakan du -sh ./*

rollinjack
sumber
0

Anda juga dapat menggunakan ls -ldh:

ls -ldh /etc drwxr-xr-x 145 root root 12K 2012-06-02 11:44 /etc

-l adalah untuk daftar panjang; -d adalah untuk menampilkan informasi dir, bukan isi dari dir, -h adalah untuk menampilkan ukuran dalam format yang dapat dibaca.

fromnaboo
sumber
4
Ini tidak benar, orang yang bertanya jelas mencari jejak direktori dan isinya pada disk. @ sepp2k jawaban sudah benar.
blong
1
Perintah ls -ldh hanya menunjukkan ukuran struktur inode dari sebuah direktori. Metrik adalah cerminan ukuran tabel indeks nama file, tetapi bukan ukuran sebenarnya dari konten file dalam direktori.
linbianxiaocao
0

Saya selalu menginstal paket "ncdu" dan melihat semua output dari semua direktori dengan representasi grafis. Ini karena saya biasanya perlu tahu apa yang menghabiskan paling banyak ruang disk pada mesin saya, terlepas dari berapa banyak direktori tunggal merangkum.

Penggunaan: sudo ncdu /(Anda tidak perlu sudofolder yang izinnya Anda baca).

Diperlukan beberapa saat untuk memindai statistik penggunaan disk di seluruh sistem file. Ini memiliki representasi grafis baris perintah yang bagus dan termasuk navigasi keyboard menggunakan tombol panah, seperti masuk lebih dalam atau lebih tinggi di jalur yang dipindai. Anda juga dapat menghapus item dengan menekan D.

Etescartz
sumber
0

Anda dapat menggunakan "file-size.sh" dari perpustakaan Velk awk :

ls -ARgo "$@" | awk '{q += $3} END {print q}'
Steven Penny
sumber
0

du -hd1

akan mendaftar dalam format yang dapat dibaca manusia ukuran semua direktori, misalnya

656K    ./rubberband
2.2M    ./lame
652K    ./pkg-config
Boris Yakubchik
sumber
0

Saya mencoba dengan perintah di bawah ini karena sudah jawaban terbaik telah disediakan

sudo find . -maxdepth 1 -exec du -shk {} \;| awk 'NR >1'| awk 'BEGIN{sum=1}{sum=sum+$1}END{print sum}'

keluaran

 sudo find . -maxdepth 1 -exec du -shk {} \;| awk 'NR >1'| awk 'BEGIN{sum=1}{sum=sum+$1}END{print sum}'

679445
Praveen Kumar BS
sumber