Anzahl und Größe von Dateien auflisten

20. Dezember 2014

Ab und an möchte man vielleicht gerne wissen in welchen Verzeichnissen sich besonders große oder besonders viele Dateien verstecken und gegebenenfalls welche löschen. Dazu können graphische Tools wie der Disk Usage Analyzer (Gnome) oder Filelight (KDE) benutzt werden. Als Freund der Kommandozeile wollen oder müssen wir auch ohne graphische Tools klar kommen.

Dateigrößen auflisten

Für das Aufspüren großer Datenmengen kann folgender Befehl benutzt werden:

du -hd1 | sort -h

Als Ausgabe bekommt man eine Liste der Unterverzeichnisse des aktuellen Verzeichnis und das Datenaufkommen in den jeweiligen Verzeichnissen, inklusive aller Unterverzeichnisse. Die Liste ist nach Größe sortiert.

Im Detail: der Befehl du (disc usage) gibt das Datenvolumen in den Unterverzeichnissen der ersten Ebene (-d1) im aktuellen Verzeichnis zurück und formatiert die Größenangaben in Byte, Kilobyte,… (-h). Per Pipe wird die Liste an sort -h übergeben, womit eine Sortierung nach Größe vorgenommen wird.

Anzahl der Dateien auflisten

Eine ähnliche Liste, wie für die Dateigrößen erhalten wir für das Aufspüren der Anzahl von Dateien mit folgendem Befehl:

find . -xdev -type f | cut -d "/" -f 1,2 | sort | uniq -c | sort -n

Die Ausgabe listet die Anzahl der Dateien, die in einem Verzeichniss, samt Unterverzeichnissen, enthalten sind sortiert nach der Anzahl auf.

Im Detail: der Befehl find findet alle Dateien (-type f) im aktuellen Verzeichnis und dessen Unterverzeichnissen die sich auf dem gleichen Datenträger befinden (-xdev) und gibt eine Liste aller Dateien mit voller Pfadangabe zurück. Diese Liste wird per Pipe an cut -d "/" -f 1,2 übergeben und alles ausser den ersten beideb Verzeichnissen abgetrennt, indem jeder Eintrag der Liste an “/” aufgetrennt wird und nur die ersten zwei Felder (-f 1,2) behalten werden. Diese Liste wird weitergeleitet und zunächst mit sort sortiert, anschließend mit uniq nach gleichen Einträgen durchsucht und diese gezählt (-c). Die resultierende Liste wird noch einmal nach der Anzahl der gefundenenen Einträge sortiert (-n).

Update

Ürsprünglich wurde für das Auflisten der Anzahl von Dateien untenstehender Befehl verwendet. Allerdings ist der Ausdruck gegenüber dem jetzigen etwa doppelt so langsam.

find -maxdepth 1 -xdev -type d | while read -r dir; do printf "%s:\t" "$dir"; find "$dir" | wc -l; done | sort -k2 -n