it-swarm-tr.com

Komut satırında bir dizinin boyutunu nasıl alabilirim?

Seçeneği ls ile l komutunu kullanarak (dizinler ve alt dizinler içeren) bir dizin boyutunu elde etmeye çalıştım. Dosyalar için çalışıyor gibi görünüyor (ls -l file name), ancak bir dizinin boyutunu almaya çalışırsam (örneğin, ls -l /home), Sadece çok daha büyük olmasına rağmen, sadece 4096 bayt alıyorum.

1142
Abdul Al Hazred

du -sh file_path

açıklaması

  • du (d isc adaçayı) komutu dosya_yolu alanı kullanımını tahmin eder
  • Seçenekler -sh vardır (man du):

      -s, --summarize
             display only a total for each argument
    
      -h, --human-readable
             print sizes in human readable format (e.g., 1K 234M 2G)
    

    Birden fazla dizini kontrol etmek ve toplamı görmek için du -sch:

      -c, --total
             produce a grand total
    
1585
sam

du komutunu kullanmanız yeterlidir:

du -sh -- *

geçerli dizindeki tüm gizli olmayan dizinlerin, dosyaların vb. toplu okunabilir biçimde kullanılmasını sağlar.

Dizini içeren dosya sistemindeki boş alanı öğrenmek için df komutunu kullanabilirsiniz:

df -h .
347
Pacifist

du senin arkadaşın. Bir dizinin toplam boyutunu bilmek istiyorsanız, dizine atlayın ve çalıştırın:

du -hs

Ayrıca hangi alt klasörlerin ne kadar disk alanı kapladığını bilmek istiyorsanız ?! Bu komutu şu şekilde genişletebilirsiniz:

du -h --max-depth=1 | sort -hr

size tüm alt klasörlerin boyutunu verir (düzey 1). Çıktı sıralanır (üstteki en büyük klasör).

212
Chrispie

du iyi bir çıktı almak için görünüşte 100 argüman geçirmeniz gerektiği için kullanımı karmaşık olabilir. Ve gizli klasörlerin boyutunu bulmak daha da zor.

Hayatınızı kolaylaştırın ve ncdu kullanın.

ncdu

Kolayca göz atılabilen klasör özetleri başına alırsınız.

77
Teque5

Diğerleri du'den bahsetti, ancak du ncurses sürümü olan ve etkileşim sağlayan Ncd - değerinden bahsetmek istiyorum: Doğrudan dizin hiyerarşisini keşfedebilirsiniz ve alt dizinlerin boyutlarına bakın.

35
Tblue

du komutu dosyanın disk kullanımını gösterir.

-h seçeneği, sonuçları insan tarafından okunabilir biçimde gösterir (ör. 4k, 5M, 3G).

du -h (file name)
28
jackotonye

Yukarıdaki örneklerin tümü size veri boyutunu söyleyecektir diskte (yani, belirli bir dosyanın kullandığı disk alanı miktarı, genellikle gerçek dosya boyutundan daha büyüktür). Veriler gerçekten bu diskte depolanmazsa ve yalnızca inode referansları varsa, bunların size doğru bir rapor vermeyeceği bazı durumlar vardır.

Örneğinizde, ls -l dosyasını diskteki boyutunu değil, dosyanın gerçek boyutunu döndürecek olan tek bir dosyada kullandınız.

Gerçek dosya boyutlarını bilmek istiyorsanız du'ye -b seçeneğini ekleyin.

du -csbh .
24
Andy Foster

şahsen ben bunun en iyisi olduğunu düşünüyorum, eğer ncdu kullanmak istemiyorsanız

# du -sh ./*
17
ConnerMan
df -h .; du -sh -- * | sort -hr

Bu, geçerli sürücüde ne kadar disk alanı kaldığını gösterir ve ardından her dosya/dizinin ne kadar yer kapladığını gösterir. Örneğin.,

Filesystem      Size  Used Avail Use% Mounted on
/dev/sdb2       206G  167G   29G  86% /
115M    node_modules
2.1M    examples
68K     src
4.0K    webpack.config.js
4.0K    README.md
4.0K    package.json
16
mpen

I bu komutu root olarak kullan :

Sudo ls -1d */ | Sudo xargs -I{} du {} -sh && Sudo du -sh
10

geçerli dizindeki tüm dosyaları özyinelemeli olarak bul ve boyutlarını topla:

find -type f -print0 | xargs -0 stat --print='%s\n' | awk '{total+=$1} END {print total}'
10
Leon Chang

İşte .bash_aliases için bir işlev

# du with mount exclude and sort
function dusort () {
    DIR=$(echo $1 | sed 's#\/$##')
    du -scxh $(mount | awk '{print $3}' | sort | uniq \
     | sed 's#/# --  exclude=/#') $DIR/* | sort -h
}

örnek çıktı:

$ dusort /
...
0       /mnt  
0       /sbin
0       /srv
4,0K    /tmp
728K    /home
23M     /etc
169M    /boot  
528M    /root
1,4G    /usr
3,3G    /var
4,3G    /opt
9,6G    total

alt dizinler için:

$ dusort .
$ dusort /var/log/
10
feldversuch

Bir varyant daha:

du -h --max-dep=1
9
0x8BADF00D

İşte ile çalışacak bir POSIX betiği:

  • Bir dosya
  • Dosyalar
  • Bir dizin
  • Dizinler
ls -A -R -g -o "[email protected]" | awk '{n1 += $3} END {print n1}'
7
Steven Penny

du, bir dizinin medyada kapladığı ve genellikle dizindeki tüm dosyaların toplam boyutundan daha büyük olan alanı yazdırdığına dikkat edin, çünkü du tüm yardımcı bilgilerin boyutunu dikkate alır dizini dosya sistemi biçimine göre düzenlemek için medyada depolanır.

Dosya sistemi sıkıştırılabilir durumdaysa, du tüm dosyaların toplam boyutundan daha küçük bir sayı verebilir, çünkü dosyalar dosya sistemi tarafından dahili olarak sıkıştırılabilir ve bu nedenle medyada yalnızca sıkıştırılmamış bilgilerden daha az yer kaplarlar içerdikleri. Seyrek dosyalar varsa aynıdır.

dizinde sabit bağlantılar varsa, du daha küçük bir değer de yazdırabilir, çünkü dizindeki birkaç farklı dosya ortamdaki aynı verileri gösterir.

Dizindeki tüm dosyaların doğrudan toplam boyutunu elde etmek için, aşağıdaki tek satırlık Kabuk ifadesi kullanılabilir (bir GNU sistemi).

find . ! -type d -print0 | xargs -r0 stat -c %s | paste -sd+ - | bc

veya daha kısa:

find . ! -type d -printf '%s\n' | paste -sd+ - | bc

Sadece dizindeki tüm dizin olmayan dosyaların (ve alt dizinlerinin özyinelemeli) boyutlarını birer birer toplar. Sembolik bağlantılar için, sembolik bağlantının (rapor bağlantısının işaret ettiği dosyadan değil) boyutunu rapor ettiğini unutmayın.

6
anton_rh

Kullanabilirsiniz

du -sh directory/

ve

du -sh filename

klasör veya dosyanın kapladığı alanı bilmek.

df -h

disk kullanımını insan tarafından okunabilir biçimde gösterir -h bunu yapar.

Ayrıca Disk Usage Analyzer.

6
arupgsh