将所有找到的 m4a 转换为 mp3

jcu*_*bic 6 bash ffmpeg

我正在尝试将所有 m4a 转换为 mp3 我的代码如下所示:

find . -name '*.m4a' -print0 | while read -d '' -r file; do
  ffmpeg -i "$file" -n -acodec libmp3lame -ab 128k "${file%.m4a}.mp3";
done
Run Code Online (Sandbox Code Playgroud)

但它只适用于第一个 mp3 文件,接下来它会显示错误:

Parse error, at least 3 arguments were expected, only 1 given in string '<All files in one line>'

Enter command: <target>|all <time>|-1 <command>[ <argument>]
Run Code Online (Sandbox Code Playgroud)

这些文件包含空格和号和括号。

Ran*_*ein 6

\n

当\xc2\xa0逐行读取文件时,如果循环内的命令也读取stdin,则可能会耗尽输入文件。

\n
\n\n

继续阅读此处:Bash 常见问题解答 89

\n\n

所以代码应该是这样的:

\n\n
find . -name \'*.m4a\' -print0 | while read -d \'\' -r file; do\n  ffmpeg -i "$file" -n -acodec libmp3lame -ab 128k "${file%.m4a}.mp3" < /dev/null\ndone\n
Run Code Online (Sandbox Code Playgroud)\n