Rehberde depolanan miktarı tekrarlı olarak nasıl bulabilirim?


136

llVeya ile uzun bir liste yaptığınızda, bir dosyanın bayt boyutunu görebildiğinizi biliyorum ls -l. Ancak, o dizindeki dosyaları ve içindeki alt dizinleri içeren bir dizinde ne kadar depolama alanı olduğunu bilmek istiyorum. Dosya sayısını istemiyorum, bunun yerine bu dosyaların aldığı depolama miktarını istiyorum.

Yani belirli bir dizinde ne kadar depolama alanı olduğunu tekrarlı bir şekilde bilmek istiyorum? Sanırım, eğer bir emir varsa, bayt cinsinden olur.

Yanıtlar:


146

Bunu yapmayı deneyin:

du -s dir

veya

du -sh dir

-hdesteğe ihtiyacı var , işletim sisteminize bağlı.

Görmek

man du

2
-bbayt olarak çıktıya ekle
pcnate 17:16

4
--tüm tüm dosyaları listele ve -h insan okunabilir formatta dosya boyutunu gösterir du -h --all
Praneeth

29

Siz sadece:

du -sh /path/to/directory

nerede -siçindir özet ve -hiçin insan okunabilir ( standart olmayan seçenek).

Dikkatli olun , ancak aksine ls, bu olacak değil göstermek boyut dosya ancak disk kullanımı (yani dosya sistemi blok-boyutunun katı), ancak kullanabilmesi dosya, daha küçük veya daha büyük olabilir --apparent-sizeseçeneği:

du -sh --apparent-size /path/to/directory

Bu olsaydı ağ üzerinden aktarılacak olan boyut.

Aslında, dosyanın içinde "delikler" olabilir (boş kabuk), dosya sistemi blok boyutundan daha küçük olabilir, dosya sistemi düzeyinde vb. Sıkıştırılabilir. Man sayfası bu durumu açıklar .

Nicklas'ın işaret ettiği gibi , ncdudisk kullanım analizcisini de kullanabilirsiniz . Bir dizinin içinden başlatıldığında, hangi klasörlerin ve dosyaların disk alanını kullandıklarını göstererek size en büyüğünden en küçüğüne sipariş verir.

Bu soruyu da görebilirsiniz .


19

Bir dizindeki tüm {sub} klasör boyutlarını bilmek istiyorsanız, -dveya --max-depthseçeneğini de kullanabilirsiniz du(ki bu bir argüman alır: özyinelemeli limit)

Örneğin :

du -h /path/to/directory -d 1

Size bir şey gösterecek

4.0K /path/to/directory/folder1
16M  /path/to/directory/folder2
2.4G /path/to/directory/folder3
68M  /path/to/directory/folder4
8G   /path/to/directory/folder5

Not: 0Özyinelemeli limit olarak girme -sseçeneği ile eşdeğerdir . Bu 2 komut size aynı sonucu verecektir (verilen dizinde özyinelemeli insan tarafından okunabilir boyutta):

du -h /path/to/directory -d 0
du -sh /path/to/directory

-d 1Dizin yolundan önce olması gerekiyor
Abhinav Singi

İhtiyaç? Dizin yolundan sonra, ubuntu / debian dizininde benim için çalışıyor. Daha önce olması güzel olsa da, katılıyorum
Flo Schild

14

Bahsedilen dukomuta bir alternatif ncdu, terminalde kullanım için güzel bir disk kullanım analizcisi olan olabilir. Önce onu kurmanız gerekebilir, ancak paket havuzlarının çoğunda bulunur.

Düzenleme: Çıkış formatı için bu ekran görüntülerine bakın: http://dev.yorhel.nl/ncdu/scr


Mucize! Bununla, yüksek hacimli disk boyutunda depolamaya sahip hangi klasörleri görebiliyorum. Ayrıca gizemli bir şekilde kaybolan tüm dosyalarımı bile buldum. Harika bir araçtır.
Faron

11

Bu, klasörler (özyinelemeli) ve dosyalar da dahil olmak üzere geçerli dizindeki boyutların bir listesini verir.

$ du -hs *
7.5M    Applications
9.7M    Desktop
 85M    Documents
 16K    Downloads
 12G    Google Drive
 52G    Library
342M    Movies
8.3M    Music
780M    Pictures
8.5G    Projects
8.0K    Public
 16K    client1.txt

3
ölçüye göre sipariş ver: du -hs * | sort -hs
Kaiser

3

Unix'te, bir dizin sadece dosya sistemi nesnelerine (dizinlere, dosyalara veya diğer bazı egzotik şeylere atıfta bulunan inode) isimler ve referanslar içerir. Bir dosya aynı dizinde birkaç adın altında görünebilir veya birkaç dizinde listelenebilir. Yani "dizin ve içerideki dosyalar tarafından kullanılan alan", dosyalar "içeride" olmadığı için hiçbir anlam ifade etmiyor.

Bununla birlikte, komut du(1), bir dizin tarafından kullanılan alanı ve içinden erişilebilecek her şeyi listeler, du -sbir özet verir, -hGNU gibi bazı uygulamalar du"insan tarafından okunabilir" çıktı verir (yani kilobayt, megabayt).


1

Benim için OS X El Capitán'ın derinliği ve yolu durumunda geriye doğru çalıştı.

du -h -d 1 /path/to/directory

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.