You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Bash脚本中记录FFmpeg批量转换完成的文件路径?

批量转换AVI到MP4并记录转换文件路径

原脚本的问题

  • 输出重定向> text.txt放在-exec单条命令中,每次转换都会覆盖文件内容,最终仅保留最后一个转换文件的路径
  • FFmpeg输出文件名格式错误,缺少.分隔符,会生成AAA.avi-CONVERTEDmp4这类不符合要求的文件名,而非期望的AAA.avi-CONVERTED.mp4
  • 未判断FFmpeg转换是否成功,可能将失败任务的路径也写入记录;同时sh -c包裹的命令存在变量展开逻辑问题

修正后的脚本

format4find='.avi'
format4output='mp4'

# 清空记录文件(若需保留历史记录可删除此行)
> text.txt

# 遍历文件并执行转换,成功后追加记录路径
find . -iname "*$format4find" -type f -exec sh -c '
    for file do
        output="${file}-CONVERTED.${format4output}"
        # -n参数避免覆盖已存在的输出文件,转换成功才写入记录
        ffmpeg -n -i "$file" "$output" && echo "$output" >> text.txt
    done
' sh {} +

关键说明

  • -type f确保仅处理文件,避免误操作目录
  • 采用-exec sh -c '...' sh {} +批量传递文件,比逐个执行-exec更高效
  • 提前定义output变量,保证文件名格式符合要求
  • 通过&&判断转换成功后再写入记录,避免无效路径混入文件

内容的提问来源于stack exchange,提问作者manuel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 02:52:04