最後の4文字を削除する正規表現

最後の4文字を削除する正規表現

.wavファイルを.mp3ファイルに変換するときに、以下の1行スクリプトで正規表現を使用して最後の4文字を削除する方法はありますか。現時点では、私の1行スクリプトは、.wav.mp3

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

以下の出力を生成します

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

答え1

正規表現は不要で、Bashのパラメータ拡張転送中にファイル拡張子を削除するには:

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

ここでは、"${i%.*}"パターンが次のように拡張されますパラメータの終わり、最短一致を削除した後のすべて ( *)によって定義されるとおり、つまり、 。..wav

を使用したリテラル置換も実行できます"${i/.wav/.mp3}"

関連情報