正在查找只有ID3v1标签而没有ID3v2的MP3文件



我有一些"老式"MP3播放器,只能使用ID3v1标签。我的许多MP3文件只有ID3v2标签,而ID3v1区域是空白的。

我已经找到了一种很好的方法来将ID3v2中的内容批量复制到ID3v1区域(见下面的*(,但在我将其复制到数万个MP3文件之前,我突然想到我可能有一些只有ID3v1信息的文件,在这种情况下,复制(空白(ID3v2可能会擦除标签

(我已经运行了一个测试,创建了一个只有v1标签而没有v2的MP3,看起来我的解决方案没有用空格覆盖v1,但我仍然有点担心。(

你能想出一个简单的方法来批量搜索只有ID3v1标签而没有ID3v2数据的MP3文件吗?

首选Linux shell(可能通过kid3命令?(,但Windows可以。


我将ID3数据从ID3v2复制到ID3v1的方法是使用Python应用程序eyed3:

eyeD3 --to-v1.1 *.mp3
or
eyeD3 --to-v1.1 PATH 

如前所述,我还安装了kid3,它对GUI的使用很有用,但命令行很复杂。。。!

自制脚本会做得很好:

#!/bin/bash
find . -type f -name "*.mp3" -print0 | while IFS= read -r -d '' file
do
if ! eyeD3 -1 "$file" 2>&1 | grep -q "No ID3 v1.x tag"
then
echo "$file"
fi
done
  • CCD_ 1打印";找不到ID3 v1.x标签"当不存在时
  • 所以使用这个输出。如果它存在,则您有一个v1标签
  • echo "$file"将仅对具有v1标记的文件执行
  • 从而生成具有v1标记的文件列表

在Nic的解决方案中添加了一个小功能,只在有IDv1标签但没有IDv2标签的情况下输出-感谢

#!/bin/bash
find . -type f -name "*.mp3" -print0 | while IFS= read -r -d '' file
do
if ! eyeD3 -1 "$file" 2>&1 | grep -q "No ID3 v1.x tag" && eyeD3 -2 "$file" 2>&1 | grep -q "No ID3 v2.x tag"
then            
echo "$file"
fi
done

最新更新