it-swarm-tr.com

Bir dizinin boyutunu nasıl hesaplayabilirim?

Bir dizinin boyutunu nasıl bilebilirim? Alt dizinler ve dosyalar dahil.

189
Juanjo Conti
du -s directory_name

Veya insan tarafından okunabilir çıktılar elde etmek için:

du -sh directory_name

-s seçeneği, her bir alt dizinin boyutunu listelemeyeceği, yalnızca toplam boyutu listelediği anlamına gelir.

245
sepp2k

GNU du-b Seçeneğini kullanır.

Daha fazla yardım için man sayfa ve info sayfa sayfasına bakın:

-b, --bytes, --apparent-size --block-size=1 İle eşdeğerdir.

7
user2573436

Ncdu gibi ayrı bir paket kullanıldığında, iyi çalışabilir, ancak bir dereceye kadar birçok klasörün aynı karşılaştırması, sadece boyutlandırılacak klasörlerin bir listesini vererek yapılabilir. Örneğin, sisteminizdeki en üst düzey dizinleri karşılaştırmak için ...

cd /    
Sudo du -sh ./*
7
NFlourish
du -csh

-c genel toplam üretir

1
Kalpesh Soni

Deneyin

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

Bu, daha sonra du -sh ./*

1
rollinjack

Awk Kadife kütüphanesi : "file-size.sh" kullanabilirsiniz:

ls -ARgo "[email protected]" | awk '{q += $3} END {print q}'
1
Steven Penny

Her zaman "ncdu" paketini kuruyorum ve grafiksel gösterimli tüm dizinlerin çıktılarını görüyorum. Bunun nedeni, genellikle tek bir dizinin ne kadarını topladığına bakılmaksızın, makinelerimde en fazla disk alanını kaplayan şeyi bilmem gerektiğidir.

Kullanım: Sudo ncdu / (Üzerinde okuma iznine sahip olduğunuz klasörler için Sudo olması gerekmez).

Tüm dosya sisteminde disk kullanım istatistiklerini taramak biraz zaman alacaktır. Güzel bir komut satırı grafik temsili vardır ve taranan yolda daha derine veya daha yükseğe gitmek gibi ok tuşlarını kullanarak klavye navigasyonu içerir. Öğesine basarak da silebilirsiniz D.

0
Etescartz

du -hd1

tüm dizinlerin boyutlarını insan tarafından okunabilir biçimde listeler, ör.

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

Zaten en iyi cevap sağlandığından aşağıdaki komutla denedim

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

çıktı

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

679445
0
Praveen Kumar BS

Orijinal soru boyutu sordu, ancak bunun diskteki boyut veya gerçek veri boyutu olup olmadığını belirtmedi.

'Du' hesaplamasının aynı dosya sistemini kullanarak aynı boyutta bölümlere sahip sunucular arasında değişebileceğini buldum. Dosya sistemi özellikleri farklıysa, bu mantıklıdır, ancak aksi halde nedenini anlayamıyorum. Steven Penny'nin verdiği 'ls | awk' yanıtı, daha tutarlı bir yanıt verdi, ancak yine de bana çok büyük dosya listeleriyle tutarsız sonuçlar verdi.

'Find' kullanılması, bir sunucuyu XFS kullanarak ve diğerini EXT4 kullanarak karşılaştırırken bile 300.000'den fazla dosya için tutarlı sonuçlar verdi. Yani tüm dosyalarda toplam veri baytını bilmek istiyorsanız o zaman bu almak için iyi bir yol olduğunu öneririz:

find /whatever/path -type f -printf "%s\n"|awk '{q+=$1} END {print q}'
0
Angelo Babudro

ayrıca ls -ldh kullanabilirsiniz:

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

-l uzun liste içindir; -d dir bilgisini göstermek içindir, dir içeriğini değil, -h boyutu huma okunabilir biçimde görüntülemek içindir.

0
fromnaboo