Soluzione 1:
A partire da GNU coreutils 7.5 rilasciato nell'agosto 2009, sort
consente un -h
parametro, che consente suffissi numerici del tipo prodotto da du -h
:
du -hs * | sort -h
Se stai usando un ordinamento che non supporta -h
, puoi installare GNU Coreutils. Per esempio. su un vecchio Mac OS X:
brew install coreutils
du -hs * | gsort -h
Da sort
manuale:
-h, --human-numeric-sort compare human readable numbers (e.g., 2K 1G)
Soluzione 2:
du | sort -nr | cut -f2- | xargs du -hs
Soluzione 3:
@Douglas Leeder, un'altra risposta:ordina l'output leggibile dall'uomo da du -h usando un altro strumento. Come 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)}<>;'
Diviso su due linee per adattarsi al display. Puoi usarlo in questo modo o trasformarlo in una riga, funzionerà in entrambi i modi.
Uscita:
4.5M .
3.7M ./colors
372K ./plugin
128K ./autoload
100K ./doc
100K ./syntax
MODIFICA: Dopo alcuni giri di golf su PerlMonks, il risultato finale è il seguente:
perl -e'%h=map{/.\s/;99**(ord$&&7)-$`,$_}`du -h`;[email protected]{sort%h}'
Soluzione 4:
C'è uno strumento immensamente utile che uso chiamato ncdu che è progettato per trovare quelle fastidiose cartelle e file ad alto utilizzo del disco e rimuoverli. È basato su console, veloce e leggero, e ha pacchetti su tutte le principali distribuzioni.
Soluzione 5:
du -k * | sort -nr | cut -f2 | xargs -d '\n' du -sh