Aufgabe: Alle Files/Dirs nach Grösse (inkl. Belegung der Unterordner) nach Grösse sortieren und anzeigen (in Datei usage.txt speichern).
Dazu in das Verzeichnis wechseln, dass ausgewertet werden soll.
du -bs * | awk '{printf "%012.0f %s \n",$1,$2 } ' | sort > usage.txt
- du -bs * = zeige Grösse für alle Dateien in Byte (-b) für Datei und alle Unterdateien (-s = Summe) an
- awk … = formatiere die erste Spalte in eine 12 stellige Float-Zahl (Integer hat MaxInt bei 2 Milliarden) und den Datei-/Verzeichnisnamen
- sort = sortiere Liste aufsteigend nach der Grösse (absteigend = sort -r)
Liefert eine Datei „usage.txt“ mit Spalte Grösse und File/Verzeichnis aufsteigend sortiert nach Grösse.
du -bs * | awk '{ printf("%010.0f ",$1); for (i=2;i<=NF;i++){printf("%s ", $(i))}; print "\n"}' | sort
Die obige Version kann auch mit Leerzeichen in Verzeichnissen umgehen (zB Mailordner), wo der Name aus den Spalten 2 bis n bestehen kann. Das Ausgabeformat für die Grösse wurde auf 10 Ziffern geändert. NF ist in awk eine Konstante mit der Anzahl der Spalten in der aktuellen Zeile.