du komutu gizli dizinleri ayrıştırmaz


25

Aşağıdaki komutu kullanarak bir dizin tarafından kullanılan disk alanını tahmin etmek istiyorum.

du -sh dir_name

hangi gizli dizinleri hesaplamaz. Du man sayfasında bu konuda bilgi yok. Gizli dosyalar da dahil olmak üzere dizinler tarafından kullanılan disk alanı miktarı nasıl hesaplanır.

Yanıtlar:


13

Aslında öyle, işte kanıtı:

mkdir .test
echo "hi" > .test/appo
du -a
4       ./.test/appo
8       ./.test
12      .

-aSeçenek açıkça sayıldı hangi dosyaların göstermek için kullanılır.

Kullandığınız du *?


3
İçin 1... you maybe using "du *" ?
sehe

2
"Du *" kullanmıyorum. Toplam özet özetine ihtiyacım olduğunu söylemeyi unuttum. öyleyse, hem -a ve -s'yi du -as'taki gibi kullanırsam, "du: hem tüm girişleri hem de özetleyemiyorum" yazan bir hata mesajı alıyorum. Bu bir konudur. Diğer bir şey, du -ai ile bile sadece birinci seviye dosyaları görebilmem. yani gizli dizinlerin içindeki dosyaları göremiyorum.
Talespin_Kit

1
Sadece sayılan tüm dosyaları göstermek için -a'yı ekledim , sadece bu bayrağı eklemeyin, sadece ekranı etkiler, toplamları etkilemez. Size bunun yerine gizli dizinlerin sayıldığını gösteren bir karşı örnek gösterdim.
stivlo

1
şimdi sorunu buldum. Sorun gizli dizinin sembolik bir bağ olmasıydı, bu yüzden "du -Lsh dir_name" kullanmak zorunda kaldım. Teşekkürler.
Talespin_Kit

1
ah, anladım, bulduğuna sevindim, şerefe.
stivlo

53

Bu komut size gizli dizinlerin özetlenmiş boyutunu gösterir.

du -hs .[^.]*


1
Bu tam olarak aradığım şeydi, teşekkürler :)
Nikana Reklawyks

bu doğru bir çözümdür
3pns

Arkasındaki sihri biraz açıklarsan harika olurdu. hem gizli hem de gizli olmayan dosyaları ve dizinleri içeren bir cevap oluşturmak için yardımcı olacaktır.
kumetix

13

Doğru komut: du -hs $(ls -A)

$ du -hs $(ls -A)
0   test
0   .test

du -hs .* *Başka bir cevapta da belirtildiği gibi, tüm dosyaları ve alt dizinleri (gizli olanlar dahil) listelemek istiyorsanız doğru değil.

Örnek :

$ touch test
$ touch .test
$ echo *
test
$ echo .* *
. .. .test test
$ du -hs .* *
4,0K    .
1,8G    ..

Neden böyle dudavranıyor? Kullanmak Çünkü -ssonucunu özetlemek olduğunu ve tüm dosya ve alt dizinleri çocukları olduğumuza .böylece du -hsonları listelemiyor!


11

FYI, çeşitli dizinlerin işgal ettiği büyüklüğü tahmin etmek için ncdu kullanmak daha iyidir.

Ncurses GUI içinde çeşitli dizinler arasında gezinebilir ve her bir dizinin boyutunu gösterir. Eğer du kullanıyorsam, kontrol etmek istediğim her dizin için du komutunu çalıştırmak zorunda kalacağım. Dizinleri ncurses GUI’de kullanılan boyuta göre de sıralayabilirsiniz.


1
Lütfen ncdu'nun "çok daha iyi" olduğuna neden inandığınızı belirtmek için cevabınızı düzenleyin . Bağlantılı sayfa, bunun hakkında ncurses tabanlı bir versiyonundan başka bir şey söylemiyor du. Bir meraklısı görüntüleme yönteminin yanı sıra, herhangi bir işlevsel farkın açık bir göstergesi yoktur.
Dave Sherohman

Sorgunuzu dinamik olarak ayarlama yeteneğinin çok büyük bir fayda olduğunu düşünüyorum. Ncdu ~ 'yu çalıştırabilirim, hangi dizinlerin en fazla alanı kullandığını öğrenebilir ve sonra doğrudan bunlara dalabilirim. Ayrıca, ddizinleri silmek için size ciltleme sağlar, böylece doğrudan arayüzden temizleyebilirsiniz.
user88974

5

Yapar ve yapmaz. Örnek:

Ana dizinde: (sadece bir kullanıcı var)

du -sh /home/*
2.6G    /home/user

kullanıcı dizininde: (toplamlar arasındaki büyük fark)

du -sh *
61M     bin
2.0M    dump-20130124104823.tar.gz
651M    public_html
472K    twitter-2.0.0.gem
11M     wkhtmltopdf-0.11.0_rc1-static-amd64.tar.bz2

ve nedeni:

du -sh /home/user/.rvm/
1.9G    /home/user/.rvm/

du alt dizinlere inerken gizli dizinleri hesaplar, ancak geçerli dizinde * sadece .directory_name kalıbı ile eşleşmez, bu nedenle gizli gizli elemanlar ihmal edilir.

Bunu çözmem biraz zaman aldı ve shadyabhi'nin önerdiği gibi ncdu kullansaydım açıklığa kavuştu.


1

Doğru komut: du -hs .* *


Bazı ek bilgiler bunu kabul edilebilir bir cevap haline getirir.
Ramhound

1

find -maxdepth 1 -exec du -sh "{}" \; | sort -h

Bu size verir:

  • Gizli dosyaların / dizinlerin boyutu
  • Gizli olmayan dosyaların / dizinlerin boyutu
  • Geçerli dizinin genel toplam boyutu

Aynı zamanda en büyük olanı görmeyi kolaylaştırmak için çıktıyı sıralar. Ayrıca bu ~/.bash_aliasesdosyayı dosyamda bir diğer adı haline getirdim .

alias big='find -maxdepth 1 -exec du -sh "{}" \; | sort -h'
alias sbig='sudo find -maxdepth 1 -exec du -sh "{}" \; | sort -h'

Şimdi sadece bigbir dizindeki en büyük dizinleri bulmak için ve sbigsudo izinlerine ihtiyacım olduğunda çalıştırabilirim.


0
du -ahd1 | sort -hr | head -10

aşağıdaki -dseçeneklerin açıklamasıdır du --help:

-d, --max-depth = N sadece bir dizinin (veya --all ile dosya) toplamını yalnızca komut satırı argümanının altında N veya daha az olması durumunda yazdırır; - max-deep = 0, --summarize ile aynıdır.


Bu sorunun çözülmesine yardımcı olsa da, sorunun neden ve / veya nasıl çözüldüğünü açıklamıyor. Bu ek bağlamın sağlanması, uzun vadeli eğitim değerini önemli ölçüde artıracaktır. Lütfen, sınırlamaların ve varsayımların uygulandığı da dahil olmak üzere açıklama eklemek için cevabınızı düzenleyin. Teşekkürler.
fixer1234

0

Bu komut, disk kullanımının dizine girip girmediğini kontrol etmenize ve aşağıdakileri uygulamanıza yardımcı olacaktır.
"du -sch. [!.] * * | sort -h"

Belirli bir dizinin disk kullanımını nasıl hesaplayacağınızla ilgili demo. Du_sh adlı bir dizin yarattım ve içinde iki dosya (biri gizli 10 MB ve normal 20 MB) oluşturdum.

nikhil@debian:~$ mkdir Du_sh nikhil@debian:~$ cd Du_sh/ nikhil@debian:~/Du_sh$ dd if=/dev/zero of=.10MB bs=1024 count=10240 10240+0 records in 10240+0 records out 10485760 bytes (10 MB, 10 MiB) copied, 0.0299941 s, 350 MB/s nikhil@debian:~/Du_sh$ nikhil@debian:~/Du_sh$ dd if=/dev/zero of=20MB bs=2048 count=10240 10240+0 records in 10240+0 records out 20971520 bytes (21 MB, 20 MiB) copied, 0.0342258 s, 613 MB/s nikhil@debian:~/Du_sh$ du -sch .[!.]* * 10M .10MB 20M 20MB 30M total nikhil@debian:~/Du_sh$ du -sch .[!.]* * | sort -h 10M .10MB 20M 20MB 30M total nikhil@debian:~/Du_sh$

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.