Jeder, der schon mal nach großen Platzverschwendern gesucht hat, kennt vermutlich das Tool du .
Dort lässt sich mit den Parametern -s und -k und einem Pipe nach sort sich nach Größe sortieren, aber mir fällt es immer etwas schwer zu erkennen, sind das noch MB oder schon GB?
Beispiel
1du -sk /usr/* 2>/dev/null| sort -n
Ausgabe
0 /usr/lib64
0 /usr/sbin
40 /usr/local
96 /usr/src
393732 /usr/include
484820 /usr/lib32
1337084 /usr/bin
4228972 /usr/share
8205192 /usr/lib
Schönere Ausgabe
Persönlich finde ich die obige Ausgabe nicht schön zu lesen. Mittels des Tools numfmt lässt sich das etwas hübsche aufbereiten.
Wichtig hierbei ist, dass der Parameter -b statt -k verwendet wird.
1du -sb /usr/* | sort -n | numfmt --to=iec
3 /usr/lib64
3 /usr/sbin
1,1K /usr/local
79K /usr/src
300M /usr/include
472M /usr/lib32
1,3G /usr/bin
3,5G /usr/share
7,6G /usr/lib
In Spalten bitte
Mittels column lässt sich sogar noch eine Spaltigkeit herstellen
1du -sb * | sort -n | numfmt --to=iec | column -t
3 /usr/lib64
3 /usr/sbin
1,1K /usr/local
79K /usr/src
300M /usr/include
472M /usr/lib32
1,3G /usr/bin
3,5G /usr/share
7,6G /usr/lib
In “alias” auslagern
Damit man sich den Befehl nicht merken muss, kann dies in ein bash-Alias ausgelagert werden, zum Beispiel so:
1alias sft="sort -n | numfmt --to=iec | column -t"
Würde dann später so aussehen.
1du -sb /usr/* | sft
0 /usr/lib64
0 /usr/sbin
40 /usr/local
96 /usr/src
385K /usr/include
474K /usr/lib32
1,3M /usr/bin
4,1M /usr/share
7,9M /usr/lib
Ewentewell lagert man das du-Kommando ebenfalls aus, da ich gerne den Parameter -b
1function sft()
2{
3 du -sb "$@" | sort -n | numfmt --to=iec | column -t
4}
Ja, ich weiß, es gibt ncdu; ggf. geht damit auch was; ewentewell sogar in Scripten.
Habe per Zufall numfmt entdeckt und brauchte es in einen anderen Kontext und wollte mal zeigen, was damit möglich ist.