我安装的硬盘上有 3 种类型的file name
编码reiserfs
:CP1251、KOI-8、UTF-8 和 ASCII。我确实需要将所有编码递归转换为 UTF-8。是否有任何实用程序可以检测源编码并将其转换为 UTF-8,或者我必须编写 Python 脚本?
答案1
使用 convmv,这是一个 CLI 工具,可在不同的编码之间转换文件名。要将-f
这些编码从 () 转换为 ( -t
) UTF-8,请执行以下操作:
convmv -f CP1251 -t UTF-8 inputfile
convmv -f KOI-8 -t UTF-8 inputfile
convmv -f ASCII -t UTF-8 inputfile
此外,如果您要转换文件内容,请使用iconv
CLI 工具将文件内容转换为不同的编码。要将-f
这些编码从 () 转换为 ( -t
) UTF-8,请执行以下操作:
iconv -f CP1251 -t UTF-8 inputfile > outputfile
iconv -f KOI-8 -t UTF-8 inputfile > outputfile
iconv -f ASCII -t UTF-8 inputfile > outputfile
答案2
不。旧代码页系统的一个大缺点是无法检测正在使用哪一个;您必须先验地知道这一点。如果您知道哪些文件正在使用哪种编码,那么您可以使用以下方法转换名称:
mv somefile `echo somefile | iconv -f CP1251 -t UTF-8`
答案3
与@psusi sugeses 的解决方案相同iconv
,但使用循环和 while-card:
还有一行 shellsh
脚本:
for f in /path/*.txt; do mv $f `echo $f | iconv -f 866 -t UTF-8`; done
从管道读取白卡:
echo * | for f in `read f&&echo $f`; do mv $f `echo $f | iconv -f 866 -t UTF-8`; done