Bagaimana cara mengetahui direktori atau file yang menghabiskan banyak ruang?

11

Disk saya kehabisan ruang:

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
...
/dev/sda7       803G  715G   48G  95% /home

Saya ingin membaca seluruh direktori home dan mencari tahu 10 direktori atau file yang menghabiskan banyak ruang, untuk memutuskan siapa yang akan dihapus.

du -sh *dapat melihat ukuran semua subdirektori, tetapi hanya mendapat folder saat ini. Saya mungkin perlu membagi menjadi beberapa subdirs masing-masing dan secara rekursif untuk mendapatkan siapa pelakunya yang saya butuhkan.

Apakah ada cara yang baik untuk melakukan ini?

Deqing
sumber

Jawaban:

5

Jika Anda dapat menggunakan GUI, coba Baobab . Ini adalah alat grafis untuk menganalisis penggunaan ruang hard disk.

Uwe Plonus
sumber
10

ncdu adalah opsi baris perintah yang memindai direktori dan mendaftar penggunaan disk dari tertinggi ke terendah. Ini alat bantu saya untuk ini.

Anda masih harus menyelam secara rekursif dengan cara ini, tetapi itu cara mudah yang bagus untuk melakukannya.

rampok
sumber
9

Gunakan perintah ini:

t=$(df|awk 'NR!=1{sum+=$2}END{print sum}');du / –exclude /proc –exclude /sys –max-depth=1|sed '$d'|sort -rn -k1 | awk -v t=$t 'OFMT="%d" {M=64; for (a=0;a<$1;a++){if (a>c){c=a}}br=a/c;b=M*br;for(x=0;x<b;x++) {printf "\033[1;31m" "|" "\033[0m"}print " "$2" "(a/t*100)"% total"}'

Ini akan menunjukkan kepada Anda semacam grafik di baris perintah yang menunjukkan direktori yang mengkonsumsi sebagian besar ruang dalam persentase.

Jika Anda ingin menganalisis /homesatu - satunya - Anda dapat menentukan ini dalam perintah seperti ini:

t=$(df|awk 'NR!=1{sum+=$2}END{print sum}');du /home –exclude /proc –exclude /sys –max-depth=1|sed '$d'|sort -rn -k1 | awk -v t=$t 'OFMT="%d" {M=64; for (a=0;a<$1;a++){if (a>c){c=a}}br=a/c;b=M*br;for(x=0;x<b;x++) {printf "\033[1;31m" "|" "\033[0m"}print " "$2" "(a/t*100)"% total"}'

Akan terlihat seperti itu: masukkan deskripsi gambar di sini

Diambil dari sini .

mnmnc
sumber
9

du | sort -rn | kepala

  • du = Penggunaan Disk
  • urutkan menggunakan urutan numerik, mundur
  • sepuluh baris pertama
Julien
sumber
4

+1 untuk Baobab. pada baris perintah, saya biasanya hanya menggunakan du -hcsx *atau du -hcsx * | sort -h(membutuhkan versi terbaru failry sort) dan kemudian memeriksa subdirektori saat saya melanjutkan.

Juga, mcmemiliki fitur yang rapi untuk menghitung ukuran subdirektori dengan menekan Ctrl+ Spacedi atasnya (tekan Ctrl+ Spacedi atas ..untuk membuatnya menghitung ukuran untuk semua subdirektori. Kemudian Anda dapat memilih urutkan berdasarkan ukuran dalam menu.

Stefan Seidel
sumber
2
pada baris perintah, Anda harus mencoba ncdu. Ini du ncurses, pada dasarnya.
Rob
1

Coba ini:

du -a /dir | sort -nr | cut -f2 | xargs du -sh | head -n 10
Rajeev
sumber
0

Favorit GUI lain: kdirstat

Memiliki kemampuan menelusuri yang bagus, dan dan (alat bantu) menu alat untuk membantu Anda menghapus / mengkompres file Anda.

Saya juga memiliki skrip baris perintah yang saya sebut dir_usage yang telah saya unggah ke pastebin.

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

Baris perintah di atas melakukan hal berikut (secara berurutan):

  • Temukan semua file (bukan direktori) dalam folder saat ini
  • Tampilan penggunaan untuk masing-masing
  • Sortir hasilnya secara numerik
  • Gunakan hanya 10 baris terakhir (penggunaan tertinggi)
  • Potong 10 nama file (kolom pertama adalah penggunaan, kedua adalah nama file)
  • Tampilan penggunaan untuk setiap nama file (dalam format manusia)

Ini akan menghasilkan daftar ukuran 10 file terbesar yang dapat dibaca manusia dalam folder dan subfolder saat ini.

pengguna275234
sumber
3
Bisakah Anda memperluas jawaban Anda?
50-3