Hallo,
ich habe hier einige Skripte für die Konvertierung von Audio, Video und Bildern die immer nach dem gleichen Prinzip mit einer For-Schleife aufgebaut sind
Code: Alles auswählen
for file in *.mp3 ; do
fname=$(basename "$file" .mp3)
ffmpeg -i "$file" "$fname"-neu.mp3
done
Mit 'basename' will ich verhindern, dass bei einem Input 'datei.mp3' der Output statt 'datei-neu.flac' 'datei.mp3-neu.flac' heißt. Das geht soweit ganz gut. Es soll aber bei allen Arten von Audio-, Video- und Bilddateien funktionieren. Ich habe diese Skripte in KDE-Service-Menüs gepackt und diese gelten für alle Multimediadateien. Ich müsste dann ja aber für jede Dateierweiterung ein eigenes Basename erstellen
Code: Alles auswählen
fname=$(basename "$file" .mp3) # im die MP3-Erweiterung zu entfernen
fname=$(basename "$file" .m4a) # im die M4A-Erweiterung zu entfernen
fname=$(basename "$file" .wav) # im die WAV-Erweiterung zu entfernen
...
Hat Basename eine allgemeine Möglichkeit das zu entfernen? Es gibt die Option '--suffix=.list', aber auch das ist nur ein Auflisten der Erweiterungen. Günstig wäre es alles im Dateinamen vom Ende an betrachtet bis zum 1. Punkt zu entfernen. Über Google habe ich für sed z. B. diese Möglichkeit gefunden
die im Terminal erstmal funktioniert, nur weiß ich nicht wie ich die in die For-Schleife packe.