手机
当前位置:查字典教程网 >脚本专栏 >linuxshell >shell实现字符编码转换工具分享
shell实现字符编码转换工具分享
摘要:复制代码代码如下:#!/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

【shell实现字符编码转换工具分享】相关文章:

Shell实现判断进程是否存在并重新启动脚本分享

shell脚本编程之case语句学习笔记

Shell脚本实现非法IP登陆自动报警

实现批量linux格式化硬盘和挂载硬盘脚本分享

shell实现tr删除替换详解

shell获取命令行参数示例分享

shell数组常用实例分享

Shell脚本实现批量下载资源并保留原始路径

shell实现数字打印从100到200的数

linux使用select实现精确定时器详解

精品推荐
分类导航