Menemukan file yang menggunakan ruang disk paling banyak

43

Apakah mungkin untuk membuat daftar file terbesar di hard drive saya? Saya sering menggunakan df -Huntuk menampilkan penggunaan disk saya, tetapi ini hanya memberikan persentase penuh, GB tersisa, dll.

Saya melakukan banyak perhitungan intensif data, dengan sejumlah besar file kecil dan sejumlah kecil file yang sangat besar. Karena sebagian besar ruang disk saya yang digunakan adalah dalam jumlah file yang sangat kecil, mungkin sulit untuk melacak di mana file-file besar ini berada. Menghapus file 1 kB tidak membebaskan banyak ruang, tetapi menghapus file 100 GB tidak. Apakah ada cara untuk mengurutkan file pada hard drive berdasarkan ukurannya?

Terima kasih.

Andrew
sumber
Untuk 'tdu', lihat juga: unix.stackexchange.com/questions/425615/…
Joseph Paul

Jawaban:

47

Dengan alat standar yang tersedia:

Untuk daftar 10 file terbesar dari direktori saat ini: du . | sort -nr | head -n10

Untuk daftar direktori terbesar dari direktori saat ini: du -s * | sort -nr | head -n10

UPDATE Hari-hari ini saya biasanya menggunakan bentuk yang lebih mudah dibaca (seperti yang dijelaskan Jay Chakra dalam jawaban lain dan tinggalkan | head -n10, cukup biarkan ia menggulir layar. Baris terakhir memiliki file atau direktori terbesar (pohon).

Terkadang, misalnya. ketika Anda memiliki banyak titik pemasangan di direktori saat ini, alih-alih menggunakan -xatau beberapa --exclude=PATTERN, lebih mudah untuk memasang sistem file pada titik pemasangan yang tidak digunakan ( sering /mnt ) dan bekerja dari sana.

Perlu diketahui bahwa ketika bekerja dengan volume besar (NFS), Anda dapat menyebabkan beban substansial pada backend penyimpanan (filer) ketika menjalankan dubanyak direktori (sub). Dalam hal ini lebih baik mempertimbangkan pengaturan quotapada volume.

jippie
sumber
3
Untuk opsi pertama Anda, tidak bisakah Anda mencantumkannya ls -Sl | head?
Bernhard
Tidak, dumelintasi seluruh pohon direktori, sedangkan ls -S hanya memeriksa direktori saat ini.
jippie
35

Menambah jawaban jippie

Untuk daftar direktori terbesar dari direktori saat ini dalam format yang dapat dibaca manusia:

du -sh * | sort -hr | head -n10

Sampel:

[~]$ du -sh * | sort -hr | head -n10
48M app
11M lib
6.7M    Vendor
1.1M    composer.phar
488K    phpcs.phar
488K    phpcbf.phar
72K doc
16K nbproject
8.0K    composer.lock
4.0K    README.md

Itu membuatnya lebih mudah untuk dibaca :)

Jay Chakra
sumber
14

Coba ncdu, karena dapat memberi Anda gambaran umum penggunaan disk. Dari situs webnya:

Alat analisis penggunaan disk dengan antarmuka ncurses, ditujukan untuk dijalankan pada server jarak jauh di mana Anda tidak memiliki seluruh pengaturan gaphical, tetapi harus dilakukan dengan koneksi SSH sederhana. ncdu bertujuan untuk menjadi cepat, sederhana dan mudah digunakan, dan harus dapat berjalan di lingkungan minimal seperti POSIX dengan ncurses diinstal.

Renan
sumber
3

(gnu)

du -max /dir | sort -nAkan menampilkan file besar serta direktori besar, dapat digunakan untuk mengidentifikasi di mana Anda perlu melakukan pembersihan.

du -max | sort -n | tail -1000
...
46632   ./i386/update/SuSE-SLES/8/rpm/i586/kernel-source-2.4.21-138.i586.rpm
49816   ./UnitedLinux/apt/i386/RPMS.updates/k_debug-2.4.21-138.i586.rpm
679220  ./UnitedLinux/apt/i386/RPMS.updates
679248  ./UnitedLinux/apt/i386
679252  ./UnitedLinux/apt
691820  ./UnitedLinux/i586
691836  ./i386/update/SuSE-SLES/8/rpm/i586
695192  ./i386/update/SuSE-SLES/8/rpm
695788  ./i386/update/SuSE-SLES/8
695792  ./i386/update/SuSE-SLES
695804  ./i386/update
695808  ./i386
1390184 ./UnitedLinux

(Saya tahu itu pohon yang cukup tua: p)

Emmanuel
sumber
2

Ada cara sederhana dan efektif untuk menemukan ukuran setiap file dan direktori di Ubuntu:

Aplikasi> Aksesori> Penganalisis Penggunaan Disk

di jendela ini klik tombol "Scan Filesystem" pada bilah alat. setelah waktu singkat (detik) Anda memiliki penggunaan disk setiap direktori dan file.

Sam
sumber
0

Anda dapat mencoba dengan perintah ini, ini akan mencantumkan semua file yang lebih besar dari 20MB.

find / -type f -size +20000k -exec ls -lh {} \; 2> /dev/null \
  | awk '{ print $NF ": " $5 }'  | sort -hrk 2,2
patseb
sumber
3
Jika file terbesar pada sistem file Anda adalah 20MB, Anda mungkin tidak akan kehabisan ruang disk. Setidaknya dengan HD apa pun membuat milenium ini
Kevin
Itu hanya contoh, Anda letakkan di sana apa pun yang Anda inginkan. Ini akan menemukan segalanya lebih besar dari 20MB, tidak hanya file 20MB.
patseb
ls -lhlalu sort?? ls -satau stat -c %bmungkin lebih baik.
Mikel
Saya tidak mengerti. Contoh saya menggunakan ls, dan urutkan. Dia ingin menemukan file di seluruh disk bukan direktori.
patseb
0

ketik perintah berikut

cd /

lalu ketik

du -sh * | grep G

perintah di atas menunjukkan berapa banyak memori yang digunakan oleh direktori mana. setelah itu Anda harus memutuskan direktori atau file mana yang ingin Anda hapus

Dipak bodare
sumber
-2

Anda dapat mencoba dengan perintah ini, itu akan mencantumkan file besar:

ls -lrS | tail -1
thiva
sumber
menunjukkan direktori saat ini, bukan seluruh HDD.
slm