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

时间:2017-07-27 18:24:50

标签: bash lame

我在Windows 8.1中使用git bash而且我已经安装了lame。我的git在我的Laravel目录中。对于1次转换,我使用:

/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

我收到错误:

无法初始化'64kb / public / songs / album / album_1000 / song_Bagay 9(Remix)_1379645802.mp3' 无法初始化'64kb / public / songs / album / album_1000 / song_Bootleg_1379645790.mp3' 无法初始化'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,album_1000和mp3歌曲名称提供变量,因此在album_1000 / album_1000 / 64kb /上的任何字符串替换都可以。

2 个答案:

答案 0 :(得分:1)

经过一些测试后,我可以使用内部字符串替换模式

{$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

这对我有用。

答案 1 :(得分:1)

您必须具有以/开头的绝对路径,否则它将不起作用。无论如何,这解决了它在我的Mac上运行的问题。这不是文件夹权限问题,因为其他一些在线相关文章都提到了。