[shell脚本]文件编码转换
昨天晚上写的文件转码脚本,可以遍历目录,把给出的目录下(包括子目录)的GB2312文件转成UTF-8编码的;
当然,也可以修改文件开始的常量定义来完成其他类型文件和编码之间的转换;
| sh convert2.sh /your_path/ |
文件:convert2.sh
文件详细内容:
- #!/bin/bash
- # -*- coding: UTF-8 -*-
- #
- #@filename: convert2.sh
- #@version: $0.2$
- #@date: 2008/06/17
- #@author: U{kldoo ... kldscs @gmail.com}
- #@license: LGPL
- #@see: 《Advanced Bash-Scripting Guide》
- # http://wlx.westgis.ac.cn/42/
- # http://blog.csdn.net/shrekmu/archive/2006/12/20/1450643.aspx
- #@note: 转换文件gb2312编码至UTF-8编码
- #
- FILE_TYPE=".txt" #需转码的文件类型,所有文件的话置空
- NUM_TYPE=`echo $FILE_TYPE | wc -c` #文件类型的长度
- CODING_1="GB2312" #原文件编码
- CODING_2="UTF-8" #转换后的编码
- # 所有编码可以在shell下输入 iconv -l 查看
- SUFFIX="_tmp" #零时文件的后缀
- convert(){
- #转换指定文件的编码
- tmp=$file$SUFFIX
- echo "Converting... $file from $CODING_1 to $CODING_2 ."
- iconv -f $CODING_1 -t $CODING_2 $file -o $tmp
- mv $tmp $file
- #sleep 1
- }
- foreachd(){
- #递归遍历目录
- for file in $1/*
- do
- # 如果是目录就打印处理,然后继续遍历,递归调用
- if [ -d $file ]
- then
- foreachd $file
- else
- NUM_FILE=`echo $file | wc -c`
- if [ ${file:${NUM_FILE}-${NUM_TYPE}:$NUM_TYPE} == $FILE_TYPE ]
- then
- convert "$file"
- fi
- fi
- done
- }
- # 遍历转换参数1目录下的文件编码
- if [ $# == 1 ]
- then
- foreachd "$1"
- else
- echo "argv error!"
- fi
- # END file
如果你是第一次来这儿,欢迎
这个博客。 第一时间看到更多精彩内容,谢谢你的访问!
本文固定链接: http://mifunny.info/convert-coding-script-52.html
转载请注明出处及链接,非常感谢!
LD on 06月 18th, 2008 | File Under Shell | -
这个博客。 第一时间看到更多精彩内容,谢谢你的访问! 本文固定链接: http://mifunny.info/convert-coding-script-52.html
转载请注明出处及链接,非常感谢!

说说你的想法