[Linux]批量转换整个目录下的文件编码为UTF-8

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

[Linux]批量转换整个目录下的文件编码为UTF-8;[Linux]批量转换整个目录下的文件编码为UTF-8;#!/bin/bash-#===============================================================================##FILE:conv.sh##USAGE:./conv.sh##DESCRIPTION:一个支持把整个目录递归转换GB2312为UTF-8的脚本;##OPTIONS:---#REQUIREMENTS:Linux内核的操作系统;#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:---#===============================================================================set-onounset#Treatunsetvariablesasanerror#-------------------------------------------------------------------------------#检查错误#-------------------------------------------------------------------------------if[[$#==0]];thenechoecho程序版本:0.1echo实现功能:批量转换GB2312字符编码至UTF-8;echo使用方法:$(basename$0)后缀名文件1文件2目录1目录2..echo操作提示:echo1.后缀名不需要'.'这个符号;echo2.当输入参数中无后缀名,将从传入文件中取后缀并提示是否进一步操作;echoexit1fi#-------------------------------------------------------------------------------#传入参数情形1#传入的是第一个参数是后缀名;#判断的依据是第一个参数传来的不是一个文件;#-------------------------------------------------------------------------------if[[!-f$1]];thensuffix=$1fitarget=${@:2:$#}fornin${target[@]};do#判断是否是一个文件;if[[-f$n]];theniconv-fgb2312-tUTF-8$n-o$n2/dev/nullfi#判断是否是一个目录if[[-d$n]];thenfind$n-name*.$suffix|whilereadline;doiconv-fgb2312-tUTF-8$line-o$line2/dev/nulldonefidone#-------------------------------------------------------------------------------#传入参数情形2#传入的第一个参数是一个文件;#若传入参数中无目录时,将直接把文件转码;#若传入参数中有目录时,将询问是否以第一个参数后缀作为搜索目录条件;#-------------------------------------------------------------------------------if[[-f$1]];then#判断传入参数中是否有目录;fornin$@;doif[[-d$n]];thenHAS_DIR=truefidone#当传入参数中没有目录时,直接把传入文件转码;if[[$HAS_DIR!=true]];thenfornin$@;doiconv-fgb2312-tUTF-8$n-o$n2/dev/nulldoneelse#当传入参数中含有目录时,将使用第一个传入参数的后缀;suffix=${1##*.}if[[$suffix!=]];thenread-p发现第一个传入参数的后缀名为$suffix,是否使用它作为搜索目录的条件?[y/N]if[[$REPLY==y]];thenfornin$@;doif[[-f$n]];theniconv-fgb2312-tUTF-8$n-o$n2/dev/nullfiif[[-d$n]];thenfind$n-name*.$suffix|whilereadline;doiconv-fgb2312-tUTF-8$line-o$line2/dev/nulldonefidonefifififi#-------------------------------------------------------------------------------#传入参数情形3#传入第一个参数是目录;#这时考虑到用户可能转换整个目录,却忘记输转换文件后缀名;#此时将会提示用户输入后缀名;#可以输入多个后缀名,比如Android的程序源代码含有xml与java后缀;#-------------------------------------------------------------------------------if[[-d$1]];thenargvs=$@#提示用户输入文件的后缀名;read-p发现尚未输入要转换的文件后缀名,请输入需转码的后缀[可输入多个]:suffix_3fornin${argvs[@]};do#处理的是一般文件;if[[-f$n]];theniconv-fgb2312-tUTF-8$n-o$n2/dev/nullfi#处理的是一个目录;if[[-d$n]];thenforsuffixin${suffix_3[@]};dofind$n-name*.$suffix|whilereadline;doiconv-fgb2312-tUTF-8$line-o$line2/dev/nulldonedonefidonefi操作说明:假如把这个脚本内容保存至~/bin/conv,并给予权限;使用举例:1.conv后缀文件1文件2目录1目录2目录或文件..convjavaaaa.javabbb.javaAndroid源代码目录1/Android源代码目录2/2.conv文件1文件2目录1目录2目录或文件..#注意:将以第一个文件后缀作为目录的搜索条件convaaa.javabbb.javaAndroid源代码目录1/Android源代码目录2/3.conv目录1目录2目录或文件#注意:这里将会提示输入后缀名(可输入多个后缀名)convAndroid源代码目录1/Android源代码目录2/aaa.javabbb.java发现尚未输入要转换的文件后缀名,请输入需转码的后缀[可输入多个]:xmljava

1 / 4
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功