手机
当前位置:查字典教程网 >脚本专栏 >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实现系统时间和BIOS时间同步校准脚本分享

shell脚本实现批量测试局域网主机是否在线

shell 进度条实现代码

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

Shell脚本实现自动修改IP地址

Shell脚本实现分析apache日志中ip所在的地区

linux shell命令的常用快捷键

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

shell监控脚本 准备工作分享

精品推荐
分类导航