我有一个 MP3 文件库,其中在某些文件中,“CD 编号”标签 (TPOS) 包含“CDx”值,例如“CD1”或“CD2”。ID3 规范说 TPOS 值应该是数字字符串。处理这些文件会破坏一些标签编辑器,特别是 eyeD3 会忽略这些值。
通过命令行用数字字符串替换这些 ID3 标签的聪明方法是什么?
我有一个带有一些命令行魔法的解决方案,我正在寻找更简单的方法:
find . -name "*.mp3" -exec id3v2 -R {} \; |awk -F": " '/^Filename/ {f=$2};/^TPOS/ {print f, "\t", $2}'|grep CD1|awk -F" \t" '{print $1}'|xargs -L 1 -d "\n" -I{} id3v2 --TPOS "1" {}
Run Code Online (Sandbox Code Playgroud)
简而言之:找到mp3文件,用id3v2提取ID3标签,用awk提取文件名和TPOS,grep为“CD1”,剪下文件名并应用id3v2将光盘编号设置为“1”。