如何使用bash将lame子目录中的所有目录mp3文件转换为lame?

问题描述:

我在Windows 8.1中使用git bash,并且我安装了lame。我的git位于我的Laravel目录中。对于1次转换我使用:如何使用bash将lame子目录中的所有目录mp3文件转换为lame?

/c/Lame/lame --mp3input -V2 -b 64 public/songs/album/album_1000/song_Emmene-moi_1379645693.mp3 public/songs/album/album_1000/64kb/song_Emmene-moi_1379645693.mp3 

这很好。但是,当我想所有转换一次我尝试:

for file in public/songs/album/album_1000/*.mp3; 
do /c/Lame/lame --mp3input -b 64 "$file" 64kb/"${file%.*}".mp3; done 

我得到错误:

不能初始化OUTFILE“64KB /公/歌曲/专辑/ album_1000/song_Bagay 9(混音)_1379645802。 mp3' 无法初始化outfile'64kb/public/songs/album/album_1000/song_Bootleg_1379645790.mp3' 无法初始化outfile'64kb/public/songs/album/album_1000/song_Emmene-moi_1379645693.mp3' ...

我需要将它们添加到名为64kb的子目录中,如public/songs/album/album_1000/64kb/song_Emmene-moi_1379645693。 mp3

这是后来在PHP代码中使用,我将有专辑,album_1000和mp3歌曲名称的变量,所以任何字串替换album_1000 /到album_1000/64kb /将会很好。

一些测试中,我把它与内部字符串替换模式

{$Var//string_to_replace/new_string} : 

$ for file in public/songs/album/album_1000/*.mp3; 
do /c/Lame/lame --mp3input -b 64 "$file" "${file//album_1000/album_1000/64kb}"; done 

为我工作后做事。