Archiv für den Monat: Januar 2022

Shell: Rekursiv nach verschiedenen Dateitypen suchen

find ./ -type f \( -name \*.gz -o -name \*.tgz -o -name \*.tar -o -name \*.zip \)

Hier werden verschiedene Archiv-Typen in einem find-Durchgang gesucht.
Damit mehrere Extensions gefunden werden können, werden sie mit „-o“ (ODER) verknüpft und in einer runden Klammer (escaped und mit Leerzeichen nach/vor der Klammer) zusammengefasst. Statt dem Parameter „-name“ kann auch „-iname“ verwendet werden, der dann Groß- und Kleinschreibung abdeckt (zB -iname \.jpg)

Shell: Rekursiv Dateitypen ermitteln und zählen

Manchmal möchte man wissen, welche Dateitypen und wieviele davon in einem Ordner (mit Unterordnern) abgelegt sind.

Lösung:

find . -type f -name '*.*' | sed 's/.*\.//' | sort | uniq -c

Die Ausgabe sieht dann in etwa so aus:

32 doc
49 docx
3 gif
147 jpg
61 mp4
562 pdf
60 png

Sollen nur die unterschiedlichen Extensions ermittelt werden reicht:

find . -type f -name '*.*' | sed 's/.*\.//' | sort -u

Ausgabe:
doc
docx
gif

Wenn Endungen in Groß- und Kleinbuchstaben vorliegen (.PNG, .png) hilft ein Filter vor dem sort-Befehl ( tr ‚[A-Z]‘ ‚[a-z]‘ für lowercase):

find . -type f -name '*.*' | sed 's/.*\.//' | tr '[A-Z]' '[a-z]' | sort -u