shell实现字符编码转换工具分享

本站所有内容来自互联网收集,仅供学习和交流,请勿用于商业用途。如有侵权、不妥之处,请第一时间联系我们删除!Q群:迪思分享

免费资源网 – https://freexyz.cn/

复制代码

代码如下:

#!/bin/bash

: << mark

转码工具,支持UTF-8转GBK和GBK转UTF-8

孔令飞@2012-05-07

mark

#set -x

scode=”gbk”

dcode=”utf-8″

function Usage()

{

 cat << EOF

Usage: conv [OPTIONS] [DIR]

[-u] GBK to UTF-8

[-g] UTF-8 to GBK

EOF

 exit 1

}

#将当前目录下所有普通文件进行转码 GBK to UTF-8

function g2u()

{

 local dir=$1

printf “Convering $dir ……”

 for file in $(ls $dir)

 do

  file=”$dir/$file”

  if [ -f $file ];then

coding=$(file -b $file | cut -d -f1)

   #进行转码

   if [ “$coding” = “ISO-8859” ];then

    local tmpfile=$(mktemp)

Fright=$(stat -c %a $file)

    Fuser=$(stat -c %U $file)

    Fgro=$(stat -c %G $file)

iconv -f $scode -t $dcode $file > $tmpfile || Usage

    mv $tmpfile $file &&

    chmod $Fright $file

    chown $Fuser:$Fgrp $file

   fi

  fi

 done

 printf ”      donen”

}

function u2g()

{

 local dir=$1

 printf “Convering $dir ……”

 for file in $(ls $dir)

 do

  file=”$dir/$file”

if [ -f $file ];then

   coding=$(file -b $file |cut -d -f1)

   #进行转码

   if [ “$coding” = “UTF-8” ];then

local tmpfile=$(mktemp)

    Fright=$(stat -c %a $file)

    Fuser=$(stat -c %U $file)

    Fgro=$(stat -c %G $file)

iconv -f $dcode -t $scode $file > $tmpfile || Usage

    mv $tmpfile $file &&

    chmod $Fright $file

    chown $Fuser:$Fgrp $file

   fi

  fi

done

 printf ”      donen”

}

[ $# -ne 2 ] && Usage

while getopts ug opt

do

 case $opt in

u) echo “Convert gbk coding to utf-8 ….”

  for dir in $(find $2 -type d)

  do

   g2u $dir

  done

g) echo “Convert utf-8 coding to gbk ….”

  for dir in $(find $2 -type d)

  do

   u2g $dir

  done

  *) Usage

  exit 1

 esac

done

exit 0

免费资源网 – https://freexyz.cn/


© 版权声明
THE END
★喜欢这篇文章吗?喜欢的话,麻烦动动手指支持一下!★
点赞5 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容