我收到了3670个名称不是UTF-8编码的文件。这使得输入它们通常是不可能的,尽管一些程序适应并正确显示它们。这意味着我有很多像这样显示的文件
?cole ?l?mentaire
而不是像这样
école élémentaire
虽然我可以,对于任何给定的文件,直觉并重命名,我想批量重命名。诀窍不是批量重命名,这很容易,而是自动确定目标。
有什么建议吗?
答案 0 :(得分:1)
虽然我可以,对于任何给定的文件,直觉并重命名它,我想批量重命名。诀窍不是批量重命名,这很容易,而是自动确定目标。
将文件名存入文件:find <directory> > filelist.txt
检查文件名的编码:file filelist.txt
/ hexdump -C filelist | less
以UTF-8编码获取第二个文件名列表:iconv -f <source-encoding> -t utf-8 filelist.txt > filelist-utf8.txt
...此时@ Nazar554使用专门构建的convmv
命令在评论中发布了this link to a ServerFault answer,并且无法继续这个答案,并提供有关如何从两个文件列表逐行创建所需的mv
命令。 :-D
但前两个要点仍然可以帮助您确定源编码。
答案 1 :(得分:1)
总结答案linked to above:
切换到包含相关文件的目录:
cd myfiles
确定文件名的编码:
ls | file -
列出convmv
的可用编码,然后选择与第2点对应的编码:
convmv --list
执行文件编码转换为UTF-8的干转:
convmv -f xxxx -t utf8 .
执行文件名编码转换为UTF-8:
convmv --notest -f xxxx -t utf8 .
当然,需要首先在Linux上安装convmv
{1}},在Mac上安装sudo apt-get install convmv
。