shell实现字符编码转换工具分享_linuxshell教程-查字典教程网
shell实现字符编码转换工具分享
shell实现字符编码转换工具分享
发布时间:2016-12-28 来源:查字典编辑
摘要:复制代码代码如下:#!/bin/bash:

复制代码 代码如下:

#!/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

相关阅读
推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  • 最新linuxshell学习
    热门linuxshell学习
    脚本专栏子分类