我想使用 sox 更改我拥有的每个音乐文件夹中每个 mp3 的音高。我在 bash 中写了这个:
function pitch_mp3 {
for mp3 in /home/mp3s/*/*.mp3
do
cd "$(dirname "$mp3")"
output=$(basename "$mp3" .mp3)PITCHED.mp3
sox -S "$mp3" -C 192 "$output" pitch 50
done
}
例如,它将音高添加到 01song.mp3,输出文件为 01songPITCHED.mp3。但发生的情况是 sox 第一次完成这项工作,然后再次循环浏览文件夹并将音高添加到已经音高的 mp3-s,因此它们的文件名原来是 01songPITCHEDPITCHED.mp3。当我注意到时我停止了它,所以我不知道它是否会第三次添加音高等等。
为什么以及如何解决这个问题?