linux批量转换整个目录下的文件编码为UTF-8
来源:互联网 发布:mysql怎么设置联合主键 编辑:程序博客网 时间:2024/04/30 02:31
#!/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上开发就轻松得多了,不再有什么字符编码读不出来的问题;
1 0
- linux批量转换整个目录下的文件编码为UTF-8
- linux下GBK->UTF-8文件编码批量转换脚本
- linux下GBK->UTF-8文件编码批量转换脚本
- Linux下GBK->UTF-8文件编码批量转换命令
- linux 下 GBK-UTF-8文件编码批量转换脚本
- Linux下GBK文件编码批量转换UTF-8命令
- Linux下批量转换到utf-8编码的问题
- 使用iconv批量转换文件编码为utf-8
- linux 批量转换文本编码为UTF-8
- 【转载】linux下GBK->UTF- 8文件编码批量转换脚本
- Linux下批量转换GBK文件到UTF-8编码方法
- Myeclipse批量修改整个工程的编码格式为UTF-8
- linux 批量转换GBK到UTF-8编码的方法
- .java文件的ANSI编码转换为UTF-8编码
- .java文件的ANSI编码转换为UTF-8编码
- 如何在 Linux 中将文件编码转换为 UTF-8
- 如何在 Linux 中将文件编码转换为 UTF-8
- 批量转换文件为utf-8格式
- 天线笔记
- Win10系统右键添加绿色版Notepad++的打开方式
- Android打造不一样的EmptyView
- C++类内存分布
- siginfo_t
- linux批量转换整个目录下的文件编码为UTF-8
- 风雨成长路——2015上半年年总
- hdu 4150 Powerful Incantation 暴力||KMP
- 欢迎使用CSDN-markdown编辑器
- web前端实时消息列表推送方案
- 使用YUM安装ZABBIX监控
- [译]构建现代Web应用的安全指南
- 使用Python的requests库作接口测试——身份认证
- 我的st3插件及快捷键等(mac)