昨天晚上写的文件转码脚本,可以遍历目录,把给出的目录下(包括子目录)的GB2312文件转成UTF-8编码的;

当然,也可以修改文件开始的常量定义来完成其他类型文件和编码之间的转换;

sh   convert2.sh    /your_path/

文件:convert2.sh
文件详细内容:

  1. #!/bin/bash
  2. # -*- coding: UTF-8 -*-
  3. #
  4. #@filename: convert2.sh
  5. #@version: $0.2$
  6. #@date: 2008/06/17
  7. #@author: U{kldoo ... kldscs @gmail.com}
  8. #@license: LGPL
  9. #@see: 《Advanced Bash-Scripting Guide》
  10. #  http://wlx.westgis.ac.cn/42/
  11. #       http://blog.csdn.net/shrekmu/archive/2006/12/20/1450643.aspx
  12. #@note: 转换文件gb2312编码至UTF-8编码
  13. #
  14. FILE_TYPE=".txt"     #需转码的文件类型,所有文件的话置空
  15. NUM_TYPE=`echo $FILE_TYPE | wc -c`   #文件类型的长度
  16. CODING_1="GB2312" #原文件编码
  17. CODING_2="UTF-8" #转换后的编码
  18. # 所有编码可以在shell下输入 iconv -l 查看
  19. SUFFIX="_tmp" #零时文件的后缀
  20.  
  21. convert(){
  22. #转换指定文件的编码
  23. tmp=$file$SUFFIX
  24. echo "Converting... $file from  $CODING_1 to $CODING_2 ."
  25. iconv -f $CODING_1 -t $CODING_2 $file -o $tmp
  26. mv $tmp $file
  27. #sleep 1
  28. }
  29.  
  30. foreachd(){
  31. #递归遍历目录 
  32.   for file in $1/*
  33.   do
  34.   # 如果是目录就打印处理,然后继续遍历,递归调用
  35.     if [ -d $file ]
  36.     then
  37.       foreachd $file
  38.     else
  39.       NUM_FILE=`echo $file | wc -c`
  40.       if [ ${file:${NUM_FILE}-${NUM_TYPE}:$NUM_TYPE} == $FILE_TYPE ]
  41.       then
  42. convert "$file"
  43.       fi
  44.     fi
  45.   done
  46. }
  47.  
  48. # 遍历转换参数1目录下的文件编码
  49. if [ $# == 1 ]
  50. then
  51.   foreachd "$1"
  52. else
  53.   echo "argv error!"
  54. fi
  55. # END file

文章标识
如果你是第一次来这儿,欢迎 订阅 这个博客。 第一时间看到更多精彩内容,谢谢你的访问!
本文固定链接: http://mifunny.info/convert-coding-script-52.html
转载请注明出处及链接,非常感谢!
LD on 06月 18th, 2008 | File Under Shell | -