Bagaimana Anda mengurutkan du -sh /dir/*
berdasarkan ukuran? Saya membaca satu situs yang mengatakan menggunakan | sort -n
tetapi itu jelas tidak benar. Berikut ini contoh yang salah.
[~]# du -sh /var/* | sort -n
0 /var/mail
1.2M /var/www
1.8M /var/tmp
1.9G /var/named
2.9M /var/run
4.1G /var/log
8.0K /var/account
8.0K /var/crash
8.0K /var/cvs
8.0K /var/games
8.0K /var/local
8.0K /var/nis
8.0K /var/opt
8.0K /var/preserve
8.0K /var/racoon
12K /var/aquota.user
12K /var/portsentry
16K /var/ftp
16K /var/quota.user
20K /var/yp
24K /var/db
28K /var/empty
32K /var/lock
84K /var/profiles
224M /var/netenberg
235M /var/cpanel
245M /var/cache
620M /var/lib
748K /var/spool
command-line
text-processing
disk-usage
sort
units
xenoterracide
sumber
sumber
sort -h
bekerja untuk saya di Ubuntu 16,04 LTS pada Agustus 2017. Pertama saya menemukan drive yang saya pasang olehcd /mnt
(dipasang oleh UUID di fstab). Lalu saya lakukandu >~/dumnt.out
makasort -h ~/dumnt.out >~/dumntsort.out
saya bisa melakukan `tail ~ / dumntsort.out untuk melihat ruang babi terbesar.Jawaban:
Jika Anda memiliki GNU coreutils (umum di sebagian besar distribusi Linux), Anda dapat menggunakannya
The
-h
pilihan menceritakansort
bahwa input adalah format yang dapat dibaca manusia (nomor dengan satuan; 1024 berbasis sehingga 1023 dianggap kurang dari 1K yang terjadi sesuai dengan apa GNUdu -h
tidak).Fitur ini ditambahkan ke GNU Core Utilities 7.5 pada Agustus 2009 .
sumber
-r
untuk mengurutkan, jika Anda ingin yang besar di atascoreutils
melaluibrew
dan menambahkan folder binPATH
ke file rc Anda , dan-h
harus tersedia.tail
perintah untuk melihat babi.Coba gunakan flag -k untuk menghitung 1K blok sebelum menggunakan yang dapat dibaca manusia. Kemudian, Anda memiliki unit umum dan dapat dengan mudah melakukan pengurutan angka.
Anda tidak secara eksplisit membutuhkan unit manusia, tetapi jika Anda melakukannya, maka ada banyak cara untuk melakukannya. Banyak yang tampaknya menggunakan teknik blok 1K di atas, dan kemudian melakukan panggilan kedua ke du.
https://serverfault.com/questions/62411/how-can-i-sort-du-h-output-by-size
Jika Anda ingin melihat unit KB ditambahkan, gunakan:
sumber
Jika Anda tidak memiliki versi terbaru GNU coreutils , Anda dapat menelepon
du
tanpa-h
mendapatkan output yang dapat diurutkan, dan menghasilkan output yang ramah manusia dengan sedikit postprocessing. Ini memiliki keuntungan bekerja bahkan jika versidu
Anda tidak memiliki-h
benderanya.Jika Anda ingin sufiks SI (mis. Kelipatan 1000 daripada 1024), ubah 1024 hingga 1000 di
while
badan loop. (Perhatikan bahwa 1000 dalam kondisi tersebut dimaksudkan, sehingga Anda mendapatkan mis.1M
Daripada1000k
.)Jika Anda
du
memiliki opsi untuk menampilkan ukuran dalam byte (misalnya-b
atau-B 1
- perhatikan bahwa ini mungkin memiliki efek samping menghitung ukuran file yang sebenarnya daripada penggunaan disk), tambahkan spasi ke awals
(yaitus=" kMGTEPYZ";
), atau tambahkanif (x<1000) {return x} else {x/=1024}
di awal yanghuman
fungsi.Menampilkan angka desimal untuk angka dalam kisaran 1–10 dibiarkan sebagai latihan bagi pembaca.
sumber
Jika tidak punya,
sort -h
Anda bisa melakukan ini:Ini mendapatkan daftar du, memisahkan akhiran, dan mengurutkan menggunakan itu. Karena tidak ada akhiran untuk <1K, sed pertama menambahkan B (untuk byte). Sed kedua menambahkan pembatas antara digit dan akhiran. Sed ketiga mengkonversi G ke Z sehingga lebih besar dari M; jika Anda memiliki file terabyte, Anda harus mengonversi G ke Y dan T ke Z. Akhirnya, kami mengurutkan berdasarkan dua kolom, lalu kami mengganti akhiran G.
sumber
Pada OS X, Anda dapat menginstal coreutils yang dibutuhkan melalui Homebrew :
Dengan ini Anda akan miliki
gsort
, yang meliputi-h
parameter baris perintah.sumber
Script Perl kecil ini berhasil. Simpan sebagai
duh
(atau apa pun yang Anda inginkan) dan sebut denganduh /dir/*
sumber
Karena Mac OS X tidak memiliki
-h
opsi untuksort
, maka saya mencoba dan belajarsed
danawk
untuk upaya pertama:itu adalah garis panjang. Diperluas, yaitu:
Saya mencobanya di Mac OS X Mavericks, Yosemite, Ubuntu 2014-04 dengan
awk
menjadi defaultawk
(yaitunawk
, karena keduanyaawk
dannawk
menunjuk ke/usr/bin/mawk
) atau melongo, dan mereka semua bekerja.Berikut adalah contoh output pada Mac:
alih-alih
du -sk *
, saya melihat jawaban @ Stefan di mana grand total juga ditampilkan, dan tanpa melintasi titik mount sistem file apa pun, dengan menggunakandu -skcx *
sumber
Inilah yang saya gunakan di Ubuntu 10.04, CentOS 5.5, FreeBSD dan Mac OS X.
Saya meminjam ide dari www.geekology.co.za/ dan earthinfo.org , serta bebek terkenal dari "Linux Server Hacks" oleh O'Reilly. Saya masih menyesuaikannya dengan kebutuhan saya. Ini masih dalam proses (Seperti, saya sedang mengerjakan ini di kereta pagi ini.):
Inilah hasilnya:
sumber
du -cks -x *
? (dengan tanda bintang)ducks
, dan kemudianchmod a+x ducks
kemudian gunakan./ducks
untuk menjalankannya? Kemudian saya hanya melihat total penggunaan disk, baik di Mac OS X dan di Ubuntu 2014-10. Saya juga mencoba memasukkanducks() { ...}
definisi ke dalam.bashrc
dan kemudian menggunakannyaducks
untuk menjalankannya, dan hal yang sama pada Mac OS X, hanya melihat grand totalGila dengan skrip ini -
sumber
Dengan tidak adanya GNU
sort -h
, ini harus bekerja di sebagian besar lingkungan UNIX:sumber
Yang ini menangani nama file dengan spasi putih atau apostrof, dan bekerja pada sistem yang tidak mendukung
xargs -d
atausort -h
:yang mengakibatkan:
sumber
Ini akan mengurutkan output dengan mengurangi urutan ukuran:
Ini akan mengurutkan output dalam urutan ukuran yang meningkat:
PS: ini dapat digunakan untuk mengurutkan berdasarkan kolom mana pun tetapi nilai kolom itu harus dalam format yang sama
sumber
sort -k1rn
sama dengansort -rn
dan hanya mengurutkan secara numerik berdasarkan urutan awal angka desimal pada setiap baris. Ini tidak memahami floating point, dan tidak memahamik
,M
,G
... akhiran. 10.1k akan dianggap lebih besar dari 1.23GDiuji pada Solaris!
Ini akan menampilkan semua ukuran direktori secara rekursif, di bagian bawah akan menjadi direktori terbesar dalam Gigabytes dan di bagian atas terkecil di Kilobyte.
sumber
Yang terbesar ada di bawah:
sumber
Perintah:
du -ah . | sort -k1 -h | tail -n 50
Penjelasan:
du -ah .
sort -k1 -h | tail -n 50
sumber
Untuk mengurutkan berdasarkan ukuran dalam MB
sumber
du -h
(keluaran yang dapat dibaca manusia) diurutkan secara numerik. Anda tidak memberikan jawaban untuk itu. Anda mungkin juga ingin menautkan akun UNIX-SE Anda dengan akun lain yang Anda miliki di situs SE lainnya.Skrip ini bahkan lebih mudah:
sumber
untuk OSX
sumber
-k
hanya pembatalan-h
dan jika demikian bagaimana hal ini memberikan output yang dapat dibaca manusia yang diminta oleh OP.