如何将文件名重命名为不同的编码?

如何将文件名重命名为不同的编码?

我安装的硬盘上有 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

此外,如果您要转换文件内容,请使用iconvCLI 工具将文件内容转换为不同的编码。要将-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

相关内容