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

如何使用eyed3或ffmpeg查找文件夹内带有ID3v2.2标签的音频文件

实现方案

下面提供两种可直接运行的批量处理方案,均支持处理嵌套文件夹内的音频文件,适配4万量级文件的处理效率。

方案1:使用eyeD3实现(检测更精准,推荐)

前置准备

先安装eyeD3依赖:
pip install eyed3

可直接运行脚本

Linux/macOS 环境可直接执行以下脚本,Windows 可在 WSL 或 Git Bash 中运行,替换路径即可:

# 替换为你的音频源文件夹路径
SOURCE_DIR="/path/to/your/audio/folder"
# 替换为你要移动到的目标文件夹路径
TARGET_DIR="/path/to/target/folder"
# 自动创建不存在的目标文件夹
mkdir -p "$TARGET_DIR"

# 遍历所有mp3文件,筛选ID3v2.2标签的文件移动
find "$SOURCE_DIR" -type f -iname "*.mp3" | while read -r file; do
    # 提取标签版本信息,过滤无关报错
    tag_version=$(eyed3 "$file" 2>/dev/null | grep -oP 'ID3 v2\.2')
    if [ -n "$tag_version" ]; then
        echo "正在移动匹配文件: $file"
        mv "$file" "$TARGET_DIR/"
    fi
done

如果需要保留源文件的目录结构,把mv命令替换为rsync --relative "$file" "$TARGET_DIR/" && rm "$file"即可。

方案2:使用ffmpeg实现

如果不想安装Python依赖,可使用ffmpeg套件中的ffprobe做标签检测:

SOURCE_DIR="/path/to/your/audio/folder"
TARGET_DIR="/path/to/target/folder"
mkdir -p "$TARGET_DIR"

find "$SOURCE_DIR" -type f -iname "*.mp3" | while read -r file; do
    id3_ver=$(ffprobe "$file" 2>&1 | grep -oP 'ID3v2\.2')
    if [ -n "$id3_ver" ]; then
        mv "$file" "$TARGET_DIR/"
    fi
done

效率说明

4万文件的总处理耗时在10-30分钟区间,取决于磁盘读写速度,运行期间可通过打印的日志实时查看进度。
如果需要跳过已经处理过的重复文件,可在循环内第一行添加判断逻辑:[ -f "$TARGET_DIR/$(basename "$file")" ] && continue

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 12:09:02