正则表达式删除最后四个字符

正则表达式删除最后四个字符

当我将 .wav 文件转换为 .mp3 文件时,有没有一种方法可以在下面一行脚本中使用正则表达式消除最后四个字符。截至目前,我的单行脚本生成以以下结尾的文件.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%.*}"被扩展为模式参数末尾,由删除最短匹配*后的 everything ( )定义,即...wav

您还可以使用 进行字面替换"${i/.wav/.mp3}"

相关内容