Speicherbelegung eines Dateityps rekursiv in allen Unterordnern ermitteln

Avatar von Christoph Langner

2 Min. Lesezeit

26 Aufrufe

Ich stand vorhin vor der Aufgabe herauszufinden, wie viel Speicherplatz sämtliche JPG-Bilder und MOV-Videos in einer weit und tief verzweigten Ordnerstruktur mit unzähligen Dateien ganz unterschiedlichen Typs belegen. Die klassischen Befehle Du, Df und Co. helfen hier auf den ersten Blick nicht direkt weiter, da ich eben rekursiv den Speicherplatz dieser beiden Dateitypen ermitteln möchte.…

Ich stand vorhin vor der Aufgabe herauszufinden, wie viel Speicherplatz sämtliche JPG-Bilder und MOV-Videos in einer weit und tief verzweigten Ordnerstruktur mit unzähligen Dateien ganz unterschiedlichen Typs belegen. Die klassischen Befehle Du, Df und Co. helfen hier auf den ersten Blick nicht direkt weiter, da ich eben rekursiv den Speicherplatz dieser beiden Dateitypen ermitteln möchte.

Die Aufgabe war letztendlich gar nicht so einfach zu lösen: Mit find fische ich mir rekursiv sämtliche Dateien eines Typs aus den Unterverzeichnissen, du ermittelt daraufhin die Dateigröße jeder Datei. Danach schnippel ich mir mit tail -1 die am Anfang stehende Dateigröße aus der Ausgabe und addiere dann mit awk Zeile für Zeile der Ausgabe zusammen. Kommt ihr auf eine bessere, weil schlankere Lösung? Mich würde das mal interessieren.

$ find . -type f -name "*.JPG" -exec du -shc {} + | tail -1 | awk '{print $1}'
9,8G
$ find . -type f -name "*.MOV" -exec du -shc {} + | tail -1 | awk '{print $1}'
15G

Wer solch eine Aufgabe öfters einmal zu bewältigen hat, der kann sich das Kommando beispielsweise als Alias in die .bashrc eintragen, so muss man es nicht immer komplett neu eintippen oder aus der History herausfischen. Alternativ könnt ihr euch aber auch einmal das kleines Perl-Skript duext ansehen. Es rechnet nicht nur die Dateigrößen eines Dateityps zusammen, sondern listet die rekursiv zusammengerechnete Belegung jedes in den Unterverzeichnissen vorkommenden Dateityps inklusive der Anzahl der Datein auf.

## duext herunterladen, umbenennen und ausführbar machen
$ wget https://sites.google.com/site/mailvortex/unix-and-linux/duext/duext.pl.txt
$ mv duext.pl.txt duext
$ chmod +x duext

## duext beispielsweise auf das Homeverzeichnis loslassen
$ ./duext /home/beispiel
soh: 2 files, 7409 bytes
cmeta: 4 files, 52 bytes
png: 12112 files, 791262261 bytes
...
gpg: 3 files, 40 bytes
ots: 1 files, 19030 bytes
odt: 7 files, 226643 bytes
/////// 336 unique file extensions
/////// total 57098 files, 65985706195 bytes

## Nur die Belegung von JPG- und PNG-Dateien ausgeben
$ ./duext /home/beispiel | grep -E 'jpg|png'
png: 12114 files, 791559846 bytes
jpg: 2199 files, 5751992470 bytes

Ähnliche Beiträge

3 Kommentare zu „Speicherbelegung eines Dateityps rekursiv in allen Unterordnern ermitteln“

  1. Avatar von martin

    Für find würde ich statt -name besser -iname nehmen. Gerade bei Extensions ist die Groß/Kleinschreibung doch häufig durcheinander.

  2. Avatar von it_supertramp

    Sehr coole Lösung.
    Hab es grad eine Viertelstunde versucht mit ncdu zu lösen.

    Die --exclude Syntax erlaubt das entfernen von bestimmten Dateitypen. Leider hab ich es nicht hinbekommen, alles ausser *.jpg zu entfernen. Die Regex Syntax erlaubt leider keine negativen lookaheads.

    Danke für die tollen Blogartikel!

    Gruß @it_supertramp

  3. Avatar von brick

    Nach ein bisschen googeln 😉 finde ich folgende Lösung recht elegant:

    $ find . -type f -iname '*.JPG' -print0 | du -ch --files0-from=- | tail -1
    $ find . -type f -iname '*.MOV' -print0 | du -ch --files0-from=- | tail -1

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Markdown wird unterstützt: **fett**, _kursiv_, [Linktext](URL), `Code`, Zeilen mit - für Listen, 1. für nummerierte Listen, dreifache Backticks für Codeblöcke.

Sicherheitsabfrage: Welches Logo ist das?

Über den Blog

Seit 2006 probiere ich hier aus, was Linux, freie Software und die passende Hardware so hergeben – von Distributions-Tests bis zum Raspberry-Pi-Projekt. Praxisnah statt bloßem Nachrichtenticker.

Zuletzt auf Mastodon

Scene Composer in Aktion: Ein Screenshot wird geladen, in verschiedene 3D-Szenen wie Café, Gaming-Desktop, Homeoffice und Podcast-Studio eingesetzt, gedreht und gezoomt. Anschließend wird eine Vorschau gerendert.

Ich finde Screenshots als Aufmacher oft langweilig. In der Vergangenheit habe ich daher oft den Bildschirm im wahrsten Sinne des Wortes abfotografiert. Das bringt etwas Leben in die Artikel –…

Kategorien

Blog unterstützen

Gefällt dir, was du hier liest? Mit einer kleinen Spende hilfst du, Hosting und neue Testgeräte zu finanzieren – und sorgst nebenbei für den nötigen Kaffee.

Linux und Ich — Speicherbelegung eines Dateityps rekursiv in allen Unterordnern ermitteln
https://linuxundich.de/gnu-linux/speicherbelegung-eines-dateityps-rekursiv-unterordner-ermitteln/ — gedruckt am 25. September 2026