Lame 递归压缩 mp3 文件

Lame 递归压缩 mp3 文件

我想使用 lame 压缩我的整个音乐收藏(实际上是它的副本)。因此,很自然地,文件夹中会有文件夹,文件名中也可能会有奇怪的字符。我使用了图形声音转换器也一样,但我不喜欢它,因为它有预定义的比特率。

到目前为止我已经尝试过:

$ find . -name "*.mp3" | lame -b 160

$  find . -name "*.mp3" > list 
$ cat list | lame -b 160

$ lame -b 160 < list

所有这些都给我带来了使用错误。正确的做法是什么?此外,如果有办法覆盖原始文件,我会太高兴的。

答案1

lame无法从输入中读取文件名。您必须使用find's-execxargs对找到的每个文件运行它:

find . -iname '*.mp3' -exec lame -b {} \;

如果未指定第二个文件名,lame则会将另一个文件名附加.mp3到给定的文件名并写入该文件。lame不支持写入同一文件。您必须转换为另一个文件,然后将其复制到原始文件上:

find . -iname '*.mp3' -exec sh -c 'lame -b 160 "$0" "$0"-160 && mv "$0"-160 "$0"' {} \;

答案2

尝试以下操作:

首先从文件名中删除空格,因为它们似乎会引起麻烦:

for f in $(find . -name "*.mp3"); do rename "s/\s+/_/g" *; done

执行循环并遍历所有文件:

for f in $(find . -name "*.mp3"); do lame -b 160 "$f" tmp && mv tmp "$f"; done

现在您将用 lame 创建的文件覆盖原始文件。

相关内容