Häufigkeit der Dateiendungen in einem Verzeichnis analysieren

Gerade bei größeren Projekten oder gewachsenen Verzeichnisstrukturen stellt sich manchmal die Frage, welche Dateitypen in dem Verzeichnis enthalten sind. Im Terminal lässt sich diese Frage mit dem Befehl:

find . -type f | awk -F. 'NF>1 {print $NF}' | sort | uniq -c | sort -nr

beantworten. Als Ergebnis erhält der Nutzer eine Liste mit der Häufigkeit und den Änderungen:

478 toml
380 txt
141 lua
56 ini

Zu Berücksichtigen ist das Dateien ohne Endung vollständig ignoriert werden, bei Dateinamen mit mehreren Punkten (z. B. backup.tar.gz) wird ausschließlich die letzte Endung berücksichtigt und zudem erfolgt keine Vereinheitlichung der Groß- und Kleinschreibung, sodass beispielsweise JPG und jpg als unterschiedliche Endungen behandelt werden.

Album-Tags für MP3 und M4A Dateien setzen

Für eine Umbenennung war ich auf der Suche nach einer Möglichkeit in Audiodateien die entsprechenden Albumtags unter macOS zu setzen. Hierfür setzte ich exiftool und id3v2 ein. Im ersten Schritt wurden die Tools über den Paketmanager Homebrew installiert:

brew install exiftool
brew install id3v2

Für die M4A-Dateien wurde exiftool genutzt, welches mit kompletten Ordnern umgehen kann:

exiftool -album="Deus ex machina" .

Da exiftool die entsprechenden Tags für MP3-Dateien nicht schreiben kann, wurde für diese Dateien id3v2 in Verbindung mit dem find-Befehl genutzt:

find . -iname "*.mp3" -type f -exec id3v2 -A "Deus ex machina" {} \;

Damit wird der Album-Tag der entsprechenden Dateien neu gesetzt. Überprüft werden kann dies wiederum mit exiftool:

exiftool file.mp3

In der Ausgabe findet sich dann unter anderem der neu gesetzte Tag.

Zeilenendung bestimmer Dateitypen korrigieren

Wer die Zeilenenden einer Datei von Windows-Zeilenenden zu Unix-Zeilenenden korrigieren möchte, der kann, neben einem Editor, hierfür auch das Kommandozeilenwerkzeug dos2unix benutzen. Sollen mehrere Dateien eines Ordners umgewandelt werden, kann das ganze mit dem Befehl find kombiniert werden:

find . -name '*.groovy' -type f -print0 | xargs -0 dos2unix

Über die Filterfunktion des Befehls find, werden in diesem Fall nur Dateien mit der Endung groovy gefunden und anschließend die entsprechenden Zeilenendungen umgewandelt.

Alle Zip-Dateien in einem Verzeichnis unter macOS entpacken

Wer einen unkomplizierten Weg sucht unter macOS alle Zip-Dateien in einem Verzeichnis zu entpacken, der wird um das Terminal nicht herum kommen. Dort können mittels folgender Zeile:

find ./ -name \*.zip -exec unzip {} \;

alle Zip-Dateien in einem Verzeichnis nacheinander entpackt werden. Sollten Dateien mit gleichem Namen entpackt werden, so können diese Probleme im interaktivem Modus gelöst werden.

Videos im Terminal unter Ubuntu in MP3s umwandeln

Videos können unter Ubuntu mithilfe von FFmpeg einfach in MP3s umgewandelt werden:

ffmpeg -i file.mp4 file.mp3

Mithilfe von find kann diese Operation auch für ein komplettes Verzeichnis durchgeführt werden:

find . -iname "*.mp4" -type f -exec ffmpeg -i {} {}.mp3 \;

Da diese Operation einige Zeit in Anspruch nimmt, kann das Ganze auch mittels screen ausgeführt und so in den Hintergrund verlagert werden:

screen find . -iname "*.mp4" -type f -exec ffmpeg -i {} {}.mp3 \;