En büyük dosyaları / dizinleri bulmak için Linux yardımcı programı [kapalı]


134

Bana hangi dosyaların / klasörlerin en çok yer kapladığını gösteren bir program arıyorum:

74% music
 \- 60% music1
 \- 14% music2
12% code
13% other

KDE3'te mümkün olduğunu biliyorum, ama bunu yapmamayı tercih ederim - KDE4 veya komut satırı tercih edilir.


mac kullanıcıları için, sadece Disk Envanteri X adı verilen bu ücretsiz yazılımı tavsiye etmek istiyorum. buradan indirin derlien.com mac osx için kullanımı basit
Nimitack

Yanıtlar:


131

En büyük 10 dosyayı bulmak için (linux / bash):

find . -type f -print0 | xargs -0 du | sort -n | tail -10 | cut -f2 | xargs -I{} du -sh {}

En büyük 10 dizini bulmak için:

find . -type d -print0 | xargs -0 du | sort -n | tail -10 | cut -f2 | xargs -I{} du -sh {}

Tek fark bu -type {d:f}.

Adlarında boşluk bulunan dosyaları işler ve çıktıda okunabilir insan boyutları üretir. En son listelenen en büyük dosya. Tail argümanı, gördüğünüz sonuçların sayısıdır (burada en büyük 10).

Dosya adlarındaki boşlukları işlemek için kullanılan iki teknik vardır. find -print0 | xargs -0Kullanımları yerine boşluk sınırlayıcıları boş ve ikinci xargs -I{}giriş ürün sonlandırma boşluklar yerine yeni satır kullanır.

örnek:

$ find . -type f -print0 | xargs -0 du | sort -n | tail -10 | cut -f2 | xargs -I{} du -sh {}

  76M    ./snapshots/projects/weekly.1/onthisday/onthisday.tar.gz
  76M    ./snapshots/projects/weekly.2/onthisday/onthisday.tar.gz
  76M    ./snapshots/projects/weekly.3/onthisday/onthisday.tar.gz
  76M    ./tmp/projects/onthisday/onthisday.tar.gz
  114M   ./Dropbox/snapshots/weekly.tgz
  114M   ./Dropbox/snapshots/daily.tgz
  114M   ./Dropbox/snapshots/monthly.tgz
  117M   ./Calibre Library/Robert Martin/cc.mobi
  159M   ./.local/share/Trash/files/funky chicken.mpg
  346M   ./Downloads/The Walking Dead S02E02 ... (dutch subs nl).avi

İlk listelenen en büyük dosya : find . -type f -print0 | xargs -0 du | sort -nr | head -10 | cut -f2 | xargs -I{} du -sh {}(yani sort -nr | head -10yerine kullanın sort -n | tail -10)
Sandra Rossi

200

Ben her zaman kullanırım ncdu. Etkileşimli ve çok hızlı.


Evet ve küçük!
Luke Stanley

5
Ncdu'yu seviyorum. Favori google bulduklarımdan biri.
Rob,

5
Vay. Bunun var olduğunu nasıl bilmiyordum. Teşekkürler!
piksel

22
+1000 için ncdu--- htopdisk alanı için olduğu gibi . Süper kullanışlı!
Noah Sussman

bayraklar ne de bir .config seçenek olacaksa görünmüyor çünkü burada muhtemelen görme dosya ve karışmış klasörleri ve göreli yüzde istatistikler isterseniz çalıştırmak her zaman yazacağım tuş sırası var: [t] [g] [g].
rymo

37

Hızlı görünüm için:

du | sort -n

en sonuncusu olan tüm dizinleri listeler.

du --max-depth=1 * | sort -n

veya, fazlalıktan kaçınarak *:

du --max-depth=1 | sort -n

Geçerli dizindeki tüm dizinleri en büyük diziyle listeler.

(-n sıralamak için -n parametresi gereklidir, böylece ilk alan metin yerine bir sayı olarak sıralanır, ancak sıralama için önemli bir sayıya ihtiyacımız olduğu için -h parametresini du-du parametresini kullanmaktan alıkoyur)

Sembolik linkleri takip etmek (varsayılan olarak sembolik linkleri takip etmemek) veya sadece alt dizinler hariç dizin içeriğinin boyutunu göstermek istiyorsanız, du için diğer parametreler kullanılabilir. du bile dizinde herhangi bir dosyanın en son değiştirildiği tarih ve saati listeye dahil edebilir.


3
* Gerçekten gerekli mi? Varsayılan olarak geçerli dizindeki tüm dosyaları içermez mi?
Josh Hunt

Hayır, * gereksiz olmalı. Kullanmanın iyi bir alışkanlık ya da kötü olanın işareti olup olmadığından emin değilim. Gösterdiğin için teşekkürler. İsteğe bağlı olarak yansıtmak için cevabı değiştirdim.
mas,

Bu iyi ama sonuçlar çok kolay değil. Ben genellikle bu açmak:find {/path/to/directory} -type f -size +{file-size-in-kb}k -exec ls -lh {} \; | awk '{ print $8 ": " $5 }'
deed02392

roman # du - max derinliği = 1 | sort -n du: yasadışı seçenek - - kullanım: du [-A] [-H | -L | -P] [-a | -s | -d derinlik] [-c] [-l] [-h | -k | -m | -B boyutu] [-n] [-x] [-I maskesi] [dosya ...]
16'da

du -h --max-depth=1 2>/dev/null | sort -nr | grep -v ^0- biraz daha düzenli
Stuart Cardall

23

Çoğu şey için, CLI araçlarını tercih ederim, ancak sürücü kullanımı için, gerçekten ışık alanını seviyorum . Sunum benim için gördüğüm diğer tüm uzay yönetim araçlarından daha sezgisel.

Filelight ekran görüntüsü


1
Filelight, benim uzay domuz budama aracıdır.
Ryan Thompson

Çok iyi bir uygulama. +1
rpax

Görsel olarak, sanatsal olarak ilgi çekici ama sezgisel? Sadece bakmaktan neyi temsil ettiği hakkında hiçbir fikrim yok. Biri bunu açıklayabilir mi? Siteye gittim ve hiçbir açıklama görmedim.
G-Man

Mac'teki benzer bir araç daisydiskapp.com adresinde bulunan DaisyDisk'tir
computingfreak

20

Filelight KDE kullanıcıları için daha iyidir, ancak şeyiyle ben belirtmek zorundadır (Soru başlığı geneldir) Baobab Ubuntu, nam Disk Kullanımı Analyzer dahildir:

görüntü tanımını buraya girin


Mac platformunda buna eşdeğer bir şey arıyorsanız, DaisyDisk'i inceleyin.
computingfreak

8

Bir GUI aracı olan KDirStat , verileri hem tablo biçiminde hem de grafik olarak gösterir. Alanın çoğunun nerede kullanıldığını çok hızlı bir şekilde görebilirsiniz.

görüntü tanımını buraya girin

Bunun tam olarak istemediğiniz KDE aracı olup olmadığından emin değilim, ama bunun gibi bir soruda yine de belirtilmesi gerektiğini düşünüyorum. Bu iyi bir şey ve pek çok insan muhtemelen bunu bilmiyor - sadece son zamanlarda kendim öğrendim.


Cevap için teşekkürler. Bu var tam ben KDE3'ün vardı aynı aracı ama KDE 4. taşındı
Robert Munteanu

KDE4 için kdirstat alamadığınıza emin misiniz?
Jonik

4
Kdirstat sooooo yavaştır. Yerine ncdukullanın.
Daenyth

Sadece ncdu'yu bulmak için ctrl + f tuşlarına çarptım ve @Daenyth
Rob

KDE'de buna k4dirstat denir .
phihag

5

Bir kombinasyon her zaman Unix'teki en iyi numaradır.

du -sk $(find . -type d) | sort -n -k 1

Dizin boyutlarını KB olarak gösterecek ve sonuçta en büyük verimi verecek şekilde sıralayacaktır.
Ağaç görünümü ancak biraz daha fazla suya ihtiyaç duyacak ... gerçekten gerekli mi?

Bu taramanın dizinler arasında yuvalanmış olduğunu, bu nedenle daha yüksek dizinler için alt dizinleri tekrar sayacağını ve temel dizinin .sonunda toplam kullanım toplamı olarak görüneceğini unutmayın.

Bununla birlikte, belirli bir derinlikte arama yapmak için bulma üzerinde bir derinlik kontrolü kullanabilirsiniz.
Ve, aslında ne istediğine bağlı olarak ... taramayla daha fazla ilgilen. Derinlik kontrolü findile -maxdepthve -mindepthbelirli bir alt dizin derinliği ile sınırlandırabilir.


Çok uzun süren probleminiz için rafine bir varyasyon

find . -type d -exec du -sk {} \; |  sort -n -k 1

Bunu denedim ve çok fazla 'du: Görev: Böyle bir dosya veya dizin yok'
Josh Hunt

Cevap için teşekkürler. Ne yazık ki bash: / usr / bin / du: Çok uzun tartışma listesi
Robert Munteanu

3

Sevdiğim GT5 . Daha fazla ayrıntı için ayrıntıya inmek üzere ağaçta gezinebilir ve alt dizinleri açabilirsiniz. Sonuçları görüntülemek için lynx gibi bir metin modu web tarayıcısı kullanır. Yükleme bağları kuvvetlendirmek en iyi sonuçlar için.

alt metin


2

Bu şekilde yuvalanmış bir çıktı vermese de, deneyin du

du -h /path/to/dir/

Bunu Belgelerim klasöründe çalıştırmak aşağıdakileri dağıtıyor:

josh-hunts-macbook:Documents joshhunt$ du -h
  0B    ./Adobe Scripts
  0B    ./Colloquy Transcripts
 23M    ./Electronic Arts/The Sims 3/Custom Music
  0B    ./Electronic Arts/The Sims 3/InstalledWorlds
364K    ./Electronic Arts/The Sims 3/Library
 77M    ./Electronic Arts/The Sims 3/Recorded Videos
101M    ./Electronic Arts/The Sims 3/Saves
 40M    ./Electronic Arts/The Sims 3/Screenshots
1.6M    ./Electronic Arts/The Sims 3/Thumbnails
387M    ./Electronic Arts/The Sims 3
387M    ./Electronic Arts
984K    ./English Advanced/Documents
1.8M    ./English Advanced
  0B    ./English Extension/Documents
212K    ./English Extension
100K    ./English Tutoring
5.6M    ./IPT/Multimedia Assessment Task
720K    ./IPT/Transaction Processing Systems
8.6M    ./IPT
1.5M    ./Job
432K    ./Legal Studies/Crime
8.0K    ./Legal Studies/Documents
144K    ./Legal Studies/Family/PDFs
692K    ./Legal Studies/Family
1.1M    ./Legal Studies
380K    ./Maths/Assessment Task 1
388K    ./Maths
[...]

Ardından çıkışı, üzerinden geçirerek sıralayabilirsiniz. sort

du /path/to/dir | sort -n

Teşekkürler, ancak hangi dizinlerin en büyük olduğunu düzgün bir şekilde göstermiyor. Ana dizinde başlatırsam çıktı kullanılamaz.
Robert Munteanu

1

İşte sizin için otomatik olarak yapan script.

http://www.thegeekscope.com/linux-script-to-find-largest-files/

Komut dosyasının örnek çıktısı aşağıdadır:

**# sh get_largest_files.sh / 5**

[SIZE (BYTES)]     [% OF DISK] [OWNER]         [LAST MODIFIED ON]        [FILE] 

56421808           0%           root           2012-08-02 14:58:51       /usr/lib/locale/locale-archive
32464076           0%           root           2008-09-18 18:06:28       /usr/lib/libgcj.so.7rh.0.0
29147136           0%           root           2012-08-02 15:17:40       /var/lib/rpm/Packages
20278904           0%           root           2008-12-09 13:57:01       /usr/lib/xulrunner-1.9/libxul.so
16001944           0%           root           2012-08-02 15:02:36       /etc/selinux/targeted/modules/active/base.linked

Total disk size: 23792652288 Bytes
Total size occupied by these files: 154313868 Bytes  [ 0% of Total Disc Space  ]

*** Note: 0% represents less than 1% ***

Bu betiği çok kullanışlı ve kullanışlı bulabilirsiniz!


2
Bağlantılı web sitesi talimatlar verirken, daha sonra kişisel siteye (ki zaten kişisel bir bloga benzeyen) referansta bulunarak daha sonra parola yazmanız tercih edilir. Bu bağlantıların bozulmasını önler ve bu sitedeki
Canadian Luke

1
Bağlantı koptu mu?
Danijel

1

Her bir dosya / dizinin yüzde disk kullanımını bulmak faydalı olsa da, çoğu zaman disk içindeki en büyük dosyaları / dizinleri bilmek yeterlidir.

Yani benim favorim şudur:

# du -a | sort -n -r | head -n 20

Ve çıktı şöyle:

28626644        .
28052128        ./www
28044812        ./www/vhosts
28017860        ./www/vhosts/example.com
23317776        ./www/vhosts/example.com/httpdocs
23295012        ./www/vhosts/example.com/httpdocs/myfolder
23271868        ./www/vhosts/example.com/httpdocs/myfolder/temp
11619576        ./www/vhosts/example.com/httpdocs/myfolder/temp/main
11590700        ./www/vhosts/example.com/httpdocs/myfolder/temp/main/user
11564748        ./www/vhosts/example.com/httpdocs/myfolder/temp/others
4699852         ./www/vhosts/example.com/stats
4479728         ./www/vhosts/example.com/stats/logs
4437900         ./www/vhosts/example.com/stats/logs/access_log.processed
401848          ./lib
323432          ./lib/mysql
246828          ./lib/mysql/mydatabase
215680          ./www/vhosts/example.com/stats/webstat
182364          ./www/vhosts/example.com/httpdocs/tmp/aaa.sql
181304          ./www/vhosts/example.com/httpdocs/tmp/bbb.sql
181144          ./www/vhosts/example.com/httpdocs/tmp/ccc.sql

1

Geçerli dizindeki ve alt dizinlerindeki ilk 25 dosyayı bulmak için:

find . -type f -exec ls -al {} \; | sort -nr -k5 | head -n 25

Bu, "sort -nr -k5" piped komutu ile dosyaların boyutuna göre sıralama yaparak ilk 25 dosyayı çıkarır.


1

Diğer bir alternatif ise , son erişim zamanına göre disk alanını azaltan ve alan israf dosyalarının daha kolay bulunmasını sağlayan yaş sınırıdır .

Geçici web sayfalarını sunarak X Windows'suz bir sunucuda bile çalışır, böylece kullanım grafiklerle uzaktan analiz edilebilir. Sunucunun IP adresinin 192.168.1.101 olduğunu varsayarsak, bunu sunucunun komut satırına yazabilirsiniz.

agedu -s / -w --address 192.168.1.101:60870 --auth basic -R

Bu, "GUI" ye erişebileceğiniz ve sonuçlara göz atabileceğiniz kullanıcı adını, şifreyi ve URL'yi yazdırır. Bittiğinde, sonlandırmak ageduile Ctrl+Dsunucuda.


0
du -chs /*

Kök dizinin bir listesini gösterecektir.


0

Listeyi biraz daha tamamlamak için en sevdiğim disk kullanım analizcisini ekledim xdiskusage.

GUI bana diğer iyi ol 'X yardımcı programlarını hatırlıyor, hızlı ve şişirilmiş değil, ancak yine de hiyerarşide kolayca gezinebilir ve bazı ekran seçeneklerine sahip olabilirsiniz:

$ xdiskusage /usr

görüntü tanımını buraya girin


0

Aşağıdaki tek astarı deneyin (geçerli dizindeki en büyük 20 dosyayı görüntüler):

ls -1Rs | sed -e "s/^ *//" | grep "^[0-9]" | sort -nr | head -n20

veya okunabilir boyutlarda:

ls -1Rhs | sed -e "s/^ *//" | grep "^[0-9]" | sort -hr | head -n20

İkinci komut (olarak düzgün OSX / BSD üzerinde çalışmak için sortyok -h), yüklemek gerekir sortdan coreutils.

Bu yüzden bu takma adlar, rc dosyalarınızda (her ihtiyacınız olduğunda) kullanmanız için yararlıdır :

alias big='du -ah . | sort -rh | head -20'
alias big-files='ls -1Rhs | sed -e "s/^ *//" | grep "^[0-9]" | sort -hr | head -n20'
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.