Schlagwort-Archive: awk

Awk: Sortierte Verzeichnisliste nach Grösse (inkl. Unterverzeichnisse)

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.