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

如何编写Bash脚本批量清除目录中MP4文件的元数据?

批量清除目录中所有MP4文件元数据的低交互Bash脚本

没问题,既然你已经搞定单个文件的ffmpeg命令了,那批量处理的脚本其实很容易实现,而且能做到几乎零交互——全程只需要你运行脚本,剩下的交给它自动处理就行。

这里给你写一个稳妥且低干扰的脚本,它会递归遍历当前目录(包括子目录)下的所有MP4文件,生成清除元数据后的新文件(不会覆盖原文件,避免误操作风险):

#!/bin/bash

# 递归遍历当前目录下的所有MP4文件,批量清除元数据
find . -type f -name "*.mp4" -print0 | while IFS= read -r -d '' file; do
    # 构造输出文件名:原文件名后添加_cleaned后缀
    output_file="${file%.mp4}_cleaned.mp4"
    
    # 执行ffmpeg命令,关闭冗余输出以减少交互
    ffmpeg -i "$file" -map_metadata -1 -c:v copy -c:a copy -hide_banner -loglevel error "$output_file"
    
    # 输出处理结果提示
    if [ $? -eq 0 ]; then
        echo "✅ 处理完成: $output_file"
    else
        echo "❌ 处理失败: $file"
    fi
done

脚本细节说明:

  • 文件名兼容性:用find -print0和read -d ''组合,完美处理带空格、特殊字符的文件名,不会出现识别错误。
  • 低交互设计:ffmpeg命令加了-hide_banner(关闭启动横幅)和-loglevel error(只显示错误信息),全程不会弹出冗余输出,只有处理结果的简洁提示。
  • 安全优先:默认生成带_cleaned后缀的新文件,绝对不会覆盖原文件,你可以对比验证后再处理原文件。

使用步骤:

  1. 把上面的代码复制保存为clean_mp4_metadata.sh
  2. 给脚本添加执行权限:
    chmod +x clean_mp4_metadata.sh
    
  3. 切换到需要处理的目录,运行脚本:
    ./clean_mp4_metadata.sh
    

可选调整:

  • 如果不想处理子目录,只处理当前目录下的MP4,把find命令改成:
    find . -maxdepth 1 -type f -name "*.mp4" -print0
    
  • 如果确定要直接覆盖原文件(风险较高,谨慎操作),把output_file那行改成:
    output_file="$file"
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:50:56