发布时间:2015-09-13 22:06:10作者:知识屋
#!/bin/bash - #===============================================================================## FILE: conv.sh# # USAGE: ./conv.sh # # DESCRIPTION: # # OPTIONS: ---# REQUIREMENTS: ---# BUGS: 目前不支持传入参数中含有空格;# NOTES: ---# AUTHOR: linkscue (scue), linkscue@gmail.com# CREATED: 2013年03月06日 22时52分31秒 HKT# COPYRIGHT: Copyright (c) 2013, linkscue# REVISION: 0.1# ORGANIZATION: ---#===============================================================================__ScriptVersion="0.1"#=== FUNCTION ================================================================# NAME: usage# DESCRIPTION: Display usage information.#===============================================================================function usage (){ cat <<- EOT Usage : $0 -s suffix1 -s suffix2 -d dir1 -d dir2 -f file1 -f file2 Options: -h|help Display this message -v|version Display script version -s suffix Setting suffix -d directory Convert all file encoding to UTF-8 -f file Convert a file encoding to UTF-8EOT} # ---------- end of function usage ----------#-----------------------------------------------------------------------# Handle command line arguments#-----------------------------------------------------------------------suffixs=()directorys=()files=()while getopts ":hvd:f:s:" optdo case $opt in h|help ) usage; exit 0 ;; v|version ) echo "$0 -- Version $__ScriptVersion"; exit 0 ;; f ) files+=("$OPTARG") ;; d ) directorys+=("$OPTARG") ;; s ) suffixs+=("$OPTARG") ;; /? ) echo -e "/n Option does not exist : $OPTARG/n" usage; exit 1 ;; esac # --- end of case ---doneshift $(($OPTIND-1))# 检查输入if [[ ${#files} -lt 1 ]] && [[ ${#directorys} -lt 1 ]]; then usage exitfiTMPFILE="$(mktemp -t convXXXXXX)"trap "rm -f '$TMPFILE'" 0 # EXITtrap "rm -f '$TMPFILE'; exit 1" 2 # INTtrap "rm -f '$TMPFILE'; exit 1" 1 15 # HUP TERM#-------------------------------------------------------------------------------# 转换编码函数#-------------------------------------------------------------------------------conv_utf8(){ file="$1" echo "处理文件: '$file' ..." iconv -f gb2312 -t UTF-8 "$file" -o $TMPFILE 2> /dev/null &&/ mv -f $TMPFILE "$f" || { echo "转换失败: '${file}'" }}# 转换文件for f in "${files[@]}"; do conv_utf8 "$f"done# 转换目录文件if [[ ${#directorys} -gt 1 ]]; then if [[ ${#suffixs} -lt 1 ]]; then echo echo "请指定需转换编码的文件后缀,如 '-s txt -s java'" echo usage exit else for s in "${suffixs[@]}"; do for f in $(find $directorys -type f -name "*.${s#.}"); do conv_utf8 "$f" done done fifi
假如把这个脚本内容保存至~/bin/conv,并给予权限;
使用举例:
1. conv -f file1 -f file2 -s java -s xml -d dir1 -d dir2
2. conv -s java -d .
3. conv -s java -s xml -d android_helloworld
4. conv -f file1 -f file2
有了这个转换编码,把Windows下的工程引入到Linux上开发就轻松得多了,不再有什么字符编码读不出来的问题;
linux一键安装web环境全攻略 在linux系统中怎么一键安装web环境方法
Linux网络基本网络配置方法介绍 如何配置Linux系统的网络方法
Linux下DNS服务器搭建详解 Linux下搭建DNS服务器和配置文件
对Linux进行详细的性能监控的方法 Linux 系统性能监控命令详解
linux系统root密码忘了怎么办 linux忘记root密码后找回密码的方法
Linux基本命令有哪些 Linux系统常用操作命令有哪些
Linux必学的网络操作命令 linux网络操作相关命令汇总
linux系统从入侵到提权的详细过程 linux入侵提权服务器方法技巧
linux系统怎么用命令切换用户登录 Linux切换用户的命令是什么
在linux中添加普通新用户登录 如何在Linux中添加一个新的用户
2012-07-10
CentOS 6.3安装(详细图解教程)
Linux怎么查看网卡驱动?Linux下查看网卡的驱动程序
centos修改主机名命令
Ubuntu或UbuntuKyKin14.04Unity桌面风格与Gnome桌面风格的切换
FEDORA 17中设置TIGERVNC远程访问
StartOS 5.0相关介绍,新型的Linux系统!
解决vSphere Client登录linux版vCenter失败
LINUX最新提权 Exploits Linux Kernel <= 2.6.37
nginx在网站中的7层转发功能