Saya menemukan bahwa tidak ada cara yang mudah untuk mengetahui ukuran direktori di Bash?
Saya ingin bahwa ketika saya mengetik ls -<some options>
, ia dapat mencantumkan semua jumlah ukuran file direktori secara rekursif dan file pada saat yang sama dan mengurutkan berdasarkan urutan ukuran.
Apakah itu mungkin?
du
jawabannya.du
memperkirakan penggunaan ruang file sehingga Anda tidak dapat menggunakannya jika Anda ingin mendapatkan ukuran yang tepat.du
(setidaknya versi coreutils GNU) mungkin memiliki opsi untuk menyediakan informasi.Jawaban:
Cukup navigasikan ke direktori dan jalankan perintah berikut:
ATAU tambahkan -h untuk ukuran yang dapat dibaca manusia dan -r untuk mencetak direktori / file yang lebih besar terlebih dahulu.
sumber
du -h
membutuhkansort -h
juga, untuk memastikan bahwa, katakan981M
urutkan sebelumnya1.3G
; dengansort -n
hanya angka-angka akan diperhitungkan dan mereka akan menjadi cara putaran yang salah.-a
dan gunakan--all
daripada--max-depth=1
seperti itudu -a -h --all | sort -h
sort -h
hanya bekerja pada versi GNU / Linux, tidak beruntung dengan BSD / OS X.Tampaknya
--max-depth
opsi tidak ada dalam versidu
perintah Mac OS X. Anda dapat menggunakan yang berikut ini sebagai gantinya.du -h -d 1 | sort -n
sumber
(ini tidak akan menampilkan file tersembunyi (.dotfiles))
Gunakan
du -sm
untuk unit Mb dll Saya selalu menggunakankarena total baris (
-c
) akan berakhir di bagian bawah karena alasan yang jelas :)PS:
sumber
du --max-depth=1|sort -n
ataufind . -mindepth 1 -maxdepth 1|xargs du -s|sort -n
untuk menyertakan dotfiles juga.find . -mindepth 1 -maxdepth 1 -print0 | xargs -0 du -s | sort -n
jika beberapa jalur yang ditemukan dapat berisi spasi.sudo du -smch * | sort -h | tail
Perintah
Keluaran
Penjelasan
du
menampilkan "penggunaan disk"h
adalah untuk "dapat dibaca manusia" (keduanya, in sort dan in du)max-depth=0
Berartidu
tidak akan menampilkan ukuran subfolder (hapus itu jika Anda ingin menampilkan semua ukuran setiap file di setiap sub-, sub-sub, ..., folder)r
adalah untuk "membalikkan" (file terbesar dulu)ncdu
Ketika saya sampai pada pertanyaan ini, saya ingin membersihkan sistem file saya. Alat baris perintah
ncdu
jauh lebih cocok untuk tugas ini.Instalasi di Ubuntu:
Pemakaian:
Ketik saja
ncdu [path]
di baris perintah. Setelah beberapa detik untuk menganalisis jalur, Anda akan melihat sesuatu seperti ini:Hapus elemen yang saat ini disorot dengan d, keluar dengan CTRL+c
sumber
ls -S
diurutkan berdasarkan ukuran. Kemudian, untuk memperlihatkan ukuran juga,ls -lS
berikan tampilan long (-l
), diurutkan berdasarkan size (-S
). Saya biasanya menambahkan-h
juga, agar lebih mudah dibaca, jadils -lhS
,.sumber
du
, sepertinya seseorang telah mempostingnya. @sehe: Bergantung pada definisi real Anda - ini menunjukkan jumlah ruang yang digunakan direktori untuk menyimpan dirinya sendiri. (Hanya saja tidak juga menambahkan ukuran subentri.) Ini bukan nomor acak, dan tidak selalu 4KiB.Sederhana dan cepat:
* membutuhkan GNU Parallel .
sumber
Saya pikir saya mungkin sudah tahu apa yang ingin Anda lakukan. Ini akan memberikan daftar yang diurutkan dari semua file dan semua direktori, diurutkan berdasarkan ukuran file dan ukuran konten dalam direktori.
sumber
du
adalah pilihan, Ini hanya akan memberi Anda hasil perkiraan.[versi yang disempurnakan]
Ini akan menjadi lebih cepat dan tepat daripada versi awal di bawah ini dan akan menampilkan jumlah dari semua ukuran file dari direktori saat ini:
yang
stat -c %s
perintah pada file akan kembali ukurannya dalam bytes. Thetr
perintah di sini digunakan untuk mengatasixargs
keterbatasan perintah (rupanya pipa untukxargs
adalah hasil pemisahan pada baris lagi, melanggar logika perintah saya). Oleh karenatr
itu dilakukan perawatan penggantian line feed dengan+
tanda (plus).sed
memiliki satu-satunya tujuan untuk menghapus+
tanda terakhir dari string yang dihasilkan untuk menghindari keluhan dari perintah akhirbc
(kalkulator dasar) yang, seperti biasa, melakukan penghitungan.Pertunjukan: Saya mengujinya di beberapa direktori dan lebih dari ~ 150.000 file teratas (jumlah file saat ini dari kotak fedora 15 saya) yang saya yakini adalah hasil yang luar biasa:
Untuk berjaga-jaga jika Anda ingin membuat perbandingan dengan
du -sb /
perintah, itu akan menampilkan perkiraan penggunaan disk dalam byte (-b
opsi)Seperti yang saya harapkan, ini sedikit lebih besar dari perhitungan perintah saya karena
du
utilitas mengembalikan ruang yang dialokasikan dari setiap file dan bukan ruang yang dikonsumsi sebenarnya.[versi awal]
Anda tidak dapat menggunakan
du
perintah jika Anda perlu mengetahui jumlah pasti dari folder Anda karena (sesuai kutipan halaman manual)du
memperkirakan penggunaan ruang file. Oleh karena itu, ini akan membawa Anda ke hasil yang salah, perkiraan (mungkin mendekati ukuran jumlah tetapi kemungkinan besar lebih besar dari ukuran sebenarnya yang Anda cari).Saya pikir mungkin ada cara berbeda untuk menjawab pertanyaan Anda, tetapi ini milik saya:
Ia menemukan semua file di bawah. direktori (ubah. dengan direktori apa pun yang Anda suka), juga file tersembunyi disertakan dan (menggunakan
xargs
) keluaran nama mereka dalam satu baris, kemudian menghasilkan daftar rinci menggunakanls -l
. Ini (kadang-kadang) keluaran besar disalurkan ke perintah cut dan hanya bidang kelima (-f5
), yang merupakan ukuran file dalam byte yang diambil dan lagi disalurkanxargs
yang menghasilkan lagi satu baris ukuran dipisahkan oleh kosong. Sekarang lakukan sihir sed yang menggantikan setiap ruang kosong dengan tanda plus (+
) dan akhirnyabc
(kalkulator dasar) melakukan perhitungan matematika.Mungkin perlu penyetelan tambahan dan Anda mungkin memiliki
ls
perintah yang mengeluh tentang daftar argumen yang terlalu panjang.sumber
Solusi sederhana lainnya.
hasilnya akan terlihat seperti
mengubah "du -s" menjadi "du -sh" akan menampilkan ukuran yang dapat dibaca manusia, tetapi kita tidak dapat mengurutkan dengan metode ini.
sumber
Anda dapat menggunakan di bawah ini untuk membuat daftar file dengan ukuran du -h | sort-jam | lebih atau du -h --max-depth = 0 * | sort-jam | lebih
sumber
Saya cenderung menggunakan du dengan cara yang sederhana.
Ini memberi saya gambaran tentang direktori apa yang memakan ruang paling banyak. Saya kemudian dapat menjalankan pencarian yang lebih tepat nanti.
sumber