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}"
.