Linux系统的iconv指令是一个很好的文件编码转换工具,支持的编码范围广,使用方便,例如将一个utf-8编码的文件(名为tic)转换为gbk编码:
iconv -f utf-8 -t gbk tic > ticgbk
可以用"iconv -l"查看系统支持的所有编码列表。
另:用file -i
下面是一个可以一次转换多个文件的脚本:
mkdir dst
for file in $(find src -type f); do
iconv -f gbk -t utf-8 $file > dst/$(basename $file)
done
这里要注意的是,由于重定向的目标文件所在的目录必须已经存在,所以需要首先创建目标目录dst,其次find命令输出的文件列表是以当前目录为基准,所以输出目标必须去掉路径部分,也就是"basename $file"做的,且源目录src中不能有子目录,否则所有目录下的文件会被摊平放在dst下,如果不同子目录下有同名文件,则最后一个会覆盖前面同名文件的内容。
如果确实需要转换包括子目录的所有文件,可以通过一个临时目录中转,完成该过程的脚本"myconv.sh"内容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|