从另一篇堆栈交流帖子中,我才知道我可以批量转换原始文件名完整的媒体文件,只需使用以下命令更改文件扩展名
find ./ -name '*.mp4' -exec bash -c 'ffmpeg -i $0 -vn -acodec libmp3lame -ac 2 -ab 160k -ar 48000 ${0/mp4/mp3}' {} \;由于现在大多数计算机都有多核,我如何修改上面的命令,这样我就可以在find的-exec部分使用所有4个核心,这样我就可以同时转换4个媒体文件?
我知道GNU并行可以做类似的事情,但我不知道如何将它们组合到一个命令中。
提前感谢
哈夫
发布于 2021-02-01 22:22:46
您可以将以空值结尾的文件名传递给parallel,如下所示:
find . -name \*.mp4 -print0 | parallel -0 ...您可以通过{}访问parallel中的参数,并且可以使用{.}获取不带扩展名的文件名,因此您需要:
find . -name \*.mp4 -print0 | parallel -0 ffmpeg -i {} ... {.}.mp3先用parallel --dry-run试一下,看看看起来是否正确。默认情况下,它将使用所有内核。
https://stackoverflow.com/questions/65985342
复制相似问题