Regex zum Entfernen der letzten vier Zeichen

Regex zum Entfernen der letzten vier Zeichen

Gibt es eine Möglichkeit, die letzten vier Zeichen mit regulären Ausdrücken im folgenden einzeiligen Skript zu entfernen, wenn ich WAV-Dateien in MP3-Dateien konvertiere? Derzeit erzeugt mein einzeiliges Skript Dateien mit der Endung.wav.mp3

for i in *.wav; do avconv -i "$i" "$i".mp3;done 

Erzeugt die folgende Ausgabe

    Sanctify, Separate, & Success Success.wav.mp3
    There four types of love.wav.mp3
    Theres too much love to let you fail.wav.mp3

Antwort1

Sie möchten keinen regulären Ausdruck, sondern BashsParametererweiterungSo entfernen Sie die Dateierweiterung während der Übertragung:

for i in *.wav; do avconv -i "$i" "${i%.*}".mp3; done

Hier "${i%.*}"wird das Muster erweitert, beidas Ende des Parameters*, wie von everything ( ) definiert, nachdem .die kürzeste Übereinstimmung gelöscht wurde, d. h. .wav.

Sie können auch eine wörtliche Ersetzung mit vornehmen "${i/.wav/.mp3}".

verwandte Informationen