Utilitas Linux untuk menemukan file / direktori terbesar [ditutup]

134

Saya mencari program untuk menunjukkan kepada saya file / direktori mana yang paling banyak menempati ruang, seperti:

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

Saya tahu itu mungkin di KDE3, tapi saya lebih suka tidak melakukannya - KDE4 atau baris perintah lebih disukai.

Robert Munteanu
sumber
untuk pengguna mac, saya hanya ingin merekomendasikan perangkat lunak gratis ini bernama Disk Inventory X. unduh di sini derlien.com mudah digunakan untuk mac osx
Nimitack

Jawaban:

131

Untuk menemukan 10 file terbesar (linux / bash):

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

Untuk menemukan 10 direktori terbesar:

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

Hanya perbedaannya -type {d:f}.

Menangani file dengan spasi dalam nama, dan menghasilkan ukuran file yang dapat dibaca manusia di output. File terbesar terdaftar terakhir. Argumen untuk mengekor adalah jumlah hasil yang Anda lihat (di sini 10 terbesar).

Ada dua teknik yang digunakan untuk menangani spasi dalam nama file. The find -print0 | xargs -0penggunaan nol pembatas bukannya ruang, dan yang kedua xargs -I{}menggunakan baris bukan ruang untuk mengakhiri item masukan.

contoh:

$ 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
Sean
sumber
File terbesar terdaftar pertama : find . -type f -print0 | xargs -0 du | sort -nr | head -10 | cut -f2 | xargs -I{} du -sh {}(yaitu, gunakan sort -nr | head -10bukan sort -n | tail -10)
Sandra Rossi
200

Saya selalu menggunakan ncdu. Ini interaktif dan sangat cepat.

Daenyth
sumber
Ya dan itu kecil!
Luke Stanley
5
Saya suka ncdu. Itu salah satu penemuan google favorit saya.
Rob
5
Wow. bagaimana saya tidak tahu ini ada. Terima kasih!
pixel
22
+1000 untuk ncdu--- itu seperti htopuntuk ruang disk. Sangat berguna!
Noah Sussman
karena ada tampaknya tidak menjadi bendera atau pilihan Config, inilah urutan kunci Anda mungkin akan mengetik setiap kali Anda menjalankannya jika Anda ingin melihat file dan folder berbaur dan statistik persentase relatif: [t] [g] [g].
rymo
37

Untuk tampilan cepat:

du | sort -n

daftar semua direktori dengan yang terbesar terakhir.

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

atau, sekali lagi, menghindari * yang berlebihan:

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

daftar semua direktori dalam direktori saat ini dengan yang terbesar terakhir.

(-n parameter untuk mengurutkan diperlukan sehingga bidang pertama diurutkan sebagai angka daripada sebagai teks tetapi ini menghalangi menggunakan parameter -h untuk du karena kita membutuhkan angka signifikan untuk pengurutan)

Parameter lain untuk du tersedia jika Anda ingin mengikuti tautan simbolik (defaultnya adalah tidak mengikuti tautan simbolik) atau hanya menunjukkan ukuran isi direktori tidak termasuk subdirektori, misalnya. du bahkan dapat memasukkan dalam daftar tanggal dan waktu ketika file dalam direktori terakhir kali diubah.

mas
sumber
3
Apakah * benar-benar diperlukan. Bukankah secara default menyertakan semua file dalam direktori saat ini?
Josh Hunt
Tidak, * harus berlebihan. Saya tidak yakin apakah menggunakannya adalah tanda kebiasaan baik atau buruk. Terima kasih telah menunjukkannya. Saya telah mengubah jawaban untuk mencerminkannya sebagai opsional.
mas
Ini bagus tapi hasilnya tidak ramah. Saya biasanya beralih ke ini:find {/path/to/directory} -type f -size +{file-size-in-kb}k -exec ls -lh {} \; | awk '{ print $8 ": " $5 }'
deed02392
roman # du --max-depth = 1 | sort -n du: opsi ilegal - - penggunaan: du [-A] [-H | -L | -P] [-a | -s | -d depth] [-c] [-l] [-h | -k | -m | -B bsize] [-n] [-x] [-I mask] [file ...]
holms
du -h --max-depth=1 2>/dev/null | sort -nr | grep -v ^0- Agak lebih rapi
Stuart Cardall
23

Untuk sebagian besar hal, saya lebih suka alat CLI, tetapi untuk penggunaan drive, saya sangat suka filelight . Presentasi ini lebih intuitif bagi saya daripada alat manajemen ruang lainnya yang pernah saya lihat.

Tangkapan layar filelight

Anton Geraschenko
sumber
1
Filelight adalah alat pemangkasan space-hog pilihan saya.
Ryan Thompson
Aplikasi yang sangat bagus. +1
rpax
Secara visual, itu menarik secara artistik, tetapi intuitif? Hanya dari melihatnya, saya tidak tahu apa yang diwakilinya. Adakah yang bisa menjelaskannya? Saya pergi ke situs itu, dan saya tidak melihat penjelasan apa pun.
G-Man
Alat serupa di Mac adalah DaisyDisk, tersedia di daisydiskapp.com
computingfreak
20

Filelight lebih baik untuk pengguna KDE, tetapi untuk kelengkapan (judul pertanyaan umum) saya harus menyebutkan Baobab termasuk dalam Ubuntu, alias Disk Usage Analyzer:

masukkan deskripsi gambar di sini

Nicolas Raoul
sumber
Jika Anda mencari yang setara dengan ini di platform Mac, checkout DaisyDisk.
computingfreak
8

Alat GUI, KDirStat , menampilkan data dalam bentuk tabel dan grafik. Anda dapat melihat dengan sangat cepat di mana sebagian besar ruang digunakan.

masukkan deskripsi gambar di sini

Saya tidak yakin apakah ini persis alat KDE yang tidak Anda inginkan, tapi saya pikir itu masih harus disebutkan dalam pertanyaan seperti ini. Itu bagus dan banyak orang mungkin tidak mengetahuinya - saya sendiri baru mempelajarinya.

Jonik
sumber
Terima kasih atas jawabannya. Ini alat yang sama persis seperti yang saya miliki di KDE3, tapi saya pindah ke KDE 4.
Robert Munteanu
Apakah Anda yakin tidak bisa mendapatkan kdirstat untuk KDE4?
Jonik
4
Kdirstat sangat lambat. Gunakan ncdusebagai gantinya.
Daenyth
Saya baru saja menekan ctrl + f untuk menemukan ncdu, dan melihat bahwa saya telah meningkatkan @Daenyth
Rob
Di KDE, itu hanya disebut k4dirstat .
phihag
5

Kombinasi selalu merupakan trik terbaik di Unix.

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

Akan menampilkan ukuran direktori dalam KB dan mengurutkan untuk memberikan yang terbesar di akhir.
Namun, Tree-view membutuhkan lebih banyak fu ... apakah ini benar-benar diperlukan?

Perhatikan bahwa pemindaian ini bersarang di seluruh direktori sehingga akan menghitung sub-direktori lagi untuk direktori yang lebih tinggi dan direktori dasar .akan muncul di bagian akhir sebagai jumlah utilisasi total.

Namun Anda dapat menggunakan kontrol kedalaman pada pencarian untuk mencari pada kedalaman tertentu.
Dan, lebih banyak terlibat dengan pemindaian Anda sebenarnya ... tergantung pada apa yang Anda inginkan. Kontrol kedalaman finddengan -maxdepthdan -mindepthdapat membatasi kedalaman direktori tertentu.


Berikut adalah variasi yang disempurnakan untuk masalah arg terlalu lama Anda

find . -type d -exec du -sk {} \; |  sort -n -k 1
nik
sumber
Saya mencobanya dan saya mendapat banyak 'du: Tugas: Tidak ada file atau direktori'
Josh Hunt
Terima kasih atas jawabannya. Sayangnya saya mendapatkan bash: / usr / bin / du: Daftar argumen terlalu lama
Robert Munteanu
3

Saya suka GT5 . Anda dapat menavigasi pohon dan membuka subdirektori untuk menelusuri lebih detail. Ini menggunakan browser web mode teks, seperti lynx, untuk menampilkan hasilnya. Instal elinks untuk hasil terbaik.

teks alternatif

Dennis Williamson
sumber
2

Meskipun tidak memberi Anda output bersarang seperti itu, cobalah du

du -h /path/to/dir/

Menjalankannya di folder Documents saya memuntahkan yang berikut:

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
[...]

Kemudian Anda dapat mengurutkan output dengan menyalurkannya ke sort

du /path/to/dir | sort -n
Josh Hunt
sumber
Terima kasih, tetapi tidak menunjukkan direktori mana yang terbesar. Jika saya memulainya di direktori home saya hasilnya tidak dapat digunakan.
Robert Munteanu
1

Ini adalah skrip yang melakukannya untuk Anda secara otomatis.

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

Berikut ini adalah contoh hasil skrip:

**# 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% ***

Anda mungkin menemukan skrip ini sangat berguna dan bermanfaat!

Kam
sumber
2
Meskipun situs web yang ditautkan memberikan instruksi, lebih disukai bagi Anda untuk parafrase kemudian merujuk situs eksternal (yang terlihat seperti blog pribadi). Ini akan mencegah tautan busuk dan membantu lebih banyak orang di situs ini
Luke Kanada
1
Tautan rusak?
Danijel
1

Meskipun menemukan persentase penggunaan disk dari setiap file / direktori bermanfaat, sebagian besar waktu mengetahui file / direktori terbesar di dalam disk sudah cukup.

Jadi favorit saya adalah ini:

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

Dan outputnya seperti ini:

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
trante
sumber
1

Untuk menemukan 25 file teratas di direktori saat ini dan subdirektori:

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

Akan menampilkan 25 file teratas dengan mengurutkan berdasarkan ukuran file melalui perintah pipa "sort -nr -k5".

xpros
sumber
1

Alternatif lain adalah agedu yang memecah ruang disk oleh waktu akses terakhir, yang membuatnya lebih mudah untuk menemukan ruang membuang file.

Ia bahkan bekerja pada server tanpa X Windows dengan menyajikan halaman web sementara sehingga penggunaannya dapat dianalisis dari jarak jauh, dengan grafik. Dengan asumsi alamat IP server adalah 192.168.1.101, Anda dapat mengetik ini pada baris perintah server

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

Ini mencetak nama pengguna, kata sandi, dan URL yang dengannya Anda dapat mengakses "GUI" dan menelusuri hasilnya. Setelah selesai, akhiri agedudengan Ctrl+Ddi server.

Bastiaan
sumber
0
du -chs /*

Akan menampilkan daftar direktori root.

RusAlex
sumber
0

Untuk melengkapi daftar sedikit lagi, saya menambahkan analisa penggunaan disk favorit saya, yaitu xdiskusage.

GUI mengingat saya tentang beberapa utilitas X lain yang baik, cepat dan tidak membengkak, tetapi Anda dapat menavigasi dengan mudah dalam hierarki dan memiliki beberapa opsi tampilan:

$ xdiskusage /usr

masukkan deskripsi gambar di sini

mpy
sumber
0

Coba satu-liner berikut (menampilkan top-20 file terbesar di direktori saat ini):

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

atau dengan ukuran yang dapat dibaca manusia:

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

Perintah kedua untuk bekerja pada OSX / BSD dengan benar (seperti sorttidak ada -h), Anda harus menginstal sortdari coreutils.

Jadi alias-alias ini berguna untuk ada dalam file rc Anda (setiap kali Anda membutuhkannya):

alias big='du -ah . | sort -rh | head -20'
alias big-files='ls -1Rhs | sed -e "s/^ *//" | grep "^[0-9]" | sort -hr | head -n20'
kenorb
sumber