如何在Bash中检查无对应MP4文件以跳过MXF批量转码
Bash脚本批量转码MXF到MP4(跳过已转码文件)
直接用Bash的文件检查语法就能实现需求,以下是可运行的脚本:
#!/bin/bash # 遍历当前目录下所有.mxf文件 for mxf_file in *.mxf; do # 生成对应的.mp4文件名(替换后缀) mp4_file="${mxf_file%.mxf}.mp4" # 检查.mp4文件是否不存在 if [ ! -f "$mp4_file" ]; then # 执行ffmpeg转码命令,替换成你的实际转码参数 ffmpeg -i "$mxf_file" -c:v libx264 -c:a aac "$mp4_file" fi done
关键说明:
${mxf_file%.mxf}.mp4:Bash参数扩展语法,自动去掉文件的.mxf后缀并替换为.mp4[ ! -f "$mp4_file" ]:判断指定路径是否不是普通文件,文件不存在时条件成立- 双引号包裹文件名:避免文件名含空格、特殊字符时出现解析错误
递归处理子目录扩展:
如果需要处理目录及所有子目录里的.mxf文件,可改用find配合while循环:
#!/bin/bash find . -type f -name "*.mxf" | while read -r mxf_file; do mp4_file="${mxf_file%.mxf}.mp4" if [ ! -f "$mp4_file" ]; then ffmpeg -i "$mxf_file" -c:v libx264 -c:a aac "$mp4_file" fi done
内容的提问来源于stack exchange,提问作者feakej
相关产品推荐
相关产品推荐

