奇怪的是,我从一位使用 Windows 7 操作系统的朋友那里得到的一些音乐的编码在 nautlius 中显示为错误编码。我已经尝试过
convmv --notest -r -f windows-1255 -t utf-8 *
但它并没有解决问题。它只是另一个错误的编码。我也尝试了 latin1 和 latin3。由于我不知道原始编码是什么,也无法找到它,所以我一直在想我有什么选择。
谢谢您的任何建议。
答案1
要尝试所有编码,请选择一个文件,例如 mychosenfile.mp3m,然后循环遍历所有编码。运气好的话,您会找到一个看起来不错的编码。这里仅列出了可能的新名称:
file=mychosenfile.mp3
for enc in $(convmv --list)
do echo $enc: $(convmv --parsable -f $enc -t utf-8 "$file")
done
或者,您可以将文件重命名为从 id3 标签中获取的歌曲曲目和标题(如果有)。例如(这只是 mv 命令的回显):
find mydir -name '*.mp3' |
while read file
do if newname="$(id3info "$file" |
awk -F': ' '
/^=== TRCK/{ track = $2 }
/^=== TIT2/{ title=$2;gsub(" ","_",title) }
END { if(title!="")printf "%02d_%s.mp3\n",track,title }
')"
then dir=$(dirname "$file")
echo mv "$file" "$dir/$newname"
fi
done
答案2
要从所有文件名中删除特殊字符,请使用detox
:
detox -r -v -s utf8 /path/to/files/
您还可以通过-n
查看它将做什么来验证它听起来是否合理。
要根据音乐标签重命名所有文件,请使用lltag
:
lltag -R --mp3v2 --mp3read=21 --rename '/new/path/%a/%A/%n %t' /path/to/files
您应该考虑传递--dry-run
到第一次调用以查看将要做什么;--yes
如果您厌倦了回答问题则传递(如果缺少标签等,可能会影响新名称的质量)。
更多详细信息请参阅man detox
和man lltag
。