修复文件名编码错误

修复文件名编码错误

奇怪的是,我从一位使用 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 detoxman lltag

相关内容