Linux下使用find与ffmpeg命令行批量转换多媒体文件
解决FLAC转MP3时文件名冗余的问题
这个问题我之前也碰到过,直接在原文件名后追加.mp3肯定会留下.flac后缀,只要借助shell的参数扩展功能处理文件名,就能得到你想要的结果。
调整后的命令如下:
find ./ -name "*.flac" -exec sh -c 'ffmpeg -i "$0" -b:a 320k "${0%.flac}.mp3"' {} \;
命令详解:
-exec sh -c '...' {} \;:通过调用shell执行ffmpeg命令,这样就能用上shell的字符串处理能力${0%.flac}:这是shell的参数扩展语法,$0代表当前传入的FLAC文件路径,%.flac表示移除路径末尾的.flac后缀- 最后拼接
.mp3,就生成了Artist - Title.mp3的正确文件名
如果你更习惯分两步操作,也可以先按原命令转换,再批量重命名修正:
# 第一步:批量转换音频 find ./ -name "*.flac" -exec ffmpeg -i "{}" -b:a 320k "{}".mp3 \; # 第二步:批量移除冗余的.flac后缀 find ./ -name "*.flac.mp3" -exec rename 's/\.flac\.mp3$/.mp3/' {} \;
不过第一种方法一步到位,效率更高。
内容的提问来源于stack exchange,提问作者free_speech
相关产品推荐
相关产品推荐

