GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana saya bisa mengurutkan output du -h berdasarkan ukuran

Solusi 1:

Sejak GNU coreutils 7.5 dirilis pada Agustus 2009, sort memungkinkan -h parameter, yang memungkinkan sufiks numerik dari jenis yang dihasilkan oleh du -h :

du -hs * | sort -h

Jika Anda menggunakan pengurutan yang tidak mendukung -h , Anda dapat menginstal GNU Coreutils. Misalnya. pada Mac OS X lama:

brew install coreutils
du -hs * | gsort -h

Dari sort petunjuk:

-h, --human-numeric-sort compare human readable numbers (e.g., 2K 1G)

Solusi 2:

du | sort -nr | cut -f2- | xargs du -hs

Solusi 3:

@Douglas Leeder, satu jawaban lagi:Urutkan keluaran yang dapat dibaca manusia dari du -h menggunakan alat lain. Seperti Perl!

du -h | perl -e 'sub h{%h=(K=>10,M=>20,G=>30);($n,$u)=shift=~/([0-9.]+)(\D)/;
return $n*2**$h{$u}}print sort{h($b)<=>h($a)}<>;'

Bagi menjadi dua garis agar sesuai dengan tampilan. Anda dapat menggunakannya dengan cara ini atau menjadikannya one-liner, keduanya akan berhasil.

Keluaran:

4.5M    .
3.7M    ./colors
372K    ./plugin
128K    ./autoload
100K    ./doc
100K    ./syntax

EDIT: Setelah beberapa putaran bermain golf di PerlMonks, hasil akhirnya adalah sebagai berikut:

perl -e'%h=map{/.\s/;99**(ord$&&7)-$`,$_}`du -h`;[email protected]{sort%h}'

Solusi 4:

Ada alat yang sangat berguna yang saya gunakan disebut ncdu yang dirancang untuk menemukan folder dan file penggunaan disk yang sangat tinggi, dan menghapusnya. Berbasis konsol, cepat dan ringan, serta memiliki paket di semua distribusi utama.

Solusi 5:

du -k * | sort -nr | cut -f2 | xargs -d '\n' du -sh

Linux
  1. Bagaimana Cara Mengingat Cara Menggunakan Redirection?

  2. Bisakah Ukuran Font Grub Dikustomisasi?

  3. Urutkan Output Berdasarkan Kolom?

  1. Bagaimana saya bisa mengulang output dari perintah shell?

  2. Bagaimana saya bisa memaksa hanya jalur relatif dalam menemukan keluaran?

  3. Bagaimana saya bisa memfilter hasil unik dari keluaran grep?

  1. Bagaimana saya bisa mengurutkan berdasarkan pemilik dan grup?

  2. Bagaimana saya bisa membuat ls tampilkan dotfile terlebih dahulu?

  3. Bagaimana saya bisa memantau disk io?