如何将目录中的 .xml 文件批量转换为 UTF-8,同时保留相同的文件名

如何将目录中的 .xml 文件批量转换为 UTF-8,同时保留相同的文件名

我有许多以 ISO-8859-1 编码的 .xml 文件,并且我希望它们全部以 UTF-8 编码。

我找到了单独转换它们的代码:

iconv -f ISO-8859-1 -t UTF-8 filename.xml > newfilename.xml

并且运行良好。

我想知道如何编写一个 shell 脚本来自动清理目录中的所有 .xml 文件,然后用新的转换文件替换旧文件,但仍保留相同的文件名。

我是 Shell 脚本的新手,因此非常感激您的帮助。

答案1

您可以在 bash shell 的命令行中执行此操作

for i in *.xml; do
    iconv -f ISO-8859-1 -t UTF-8 "$i" > "$i.1" && mv "$i.1" "$i"
done

这基本上获取所有 xml 文件,将它们通过 Iconv 转换为 filname.xml.1,然后将该文件移回原始文件名

快速浏览了一下 iconv,我认为它应该是这样的(如果你使用的是 GNU 版本)

for i in *.xml; do
    iconv -sc -f ISO-8859-1 -t UTF-8 "$i" > "$i.1" && mv "$i.1" "$i"
done

-s 选项可消除警告,-c 选项可从输出中省略无效字符。

相关内容