当我将 .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}"
。