在開(kāi)發(fā)中,我們經(jīng)常需要對(duì)N多文件編碼進(jìn)行更改,iconv只能對(duì)單文件的進(jìn)行更改,怎么辦呢?我們寫(xiě)一個(gè)shell腳本來(lái)解決這個(gè)問(wèn)題。
例子一:使用shell腳本實(shí)現(xiàn)批量轉(zhuǎn)碼的操作。
#!/bin/sh
#
convertCodeFilePath=$1
fromCode=$2
toCode=$3
for i in {1..1}
do
[ -f $convertCodeFilePath ]
if [ $? -eq 0 ]
then
iconv -f $fromCode -t $toCode -c -o $convertCodeFilePath $convertCodeFilePath
if [ $? -ne 0 ]
then
echo $convertCodeFilePath "=>" convert code failed.
else
echo $convertCodeFilePath "=>" convert code success.
fi
break;
fi
[ -d $convertCodeFilePath ]
if [ $? -ne 0 ]
then
break;
fi
dir=`ls $convertCodeFilePath | sort -d`
for fileName in $dir
do
fileFullPatch=$convertCodeFilePath/$fileName
fileType=`echo $fileName |awk -F. '{print $2}'`
[ -d $fileName ]
if [ $? -eq 0 ]
then
continue
fi
if [ $fileType != 'sh' ] [ $fileType != 'py' ] [ $fileType != 'xml' ] [ $fileType != 'properties' ] \
[ $fileType != 'q' ] [ $fileType != 'hql' ] [ $fileType != 'txt' ]
then
continue
fi
iconv -f $fromCode -t $toCode -c -o $fileFullPatch $fileFullPatch
if [ $? -ne 0 ]
then
echo $fileName "=>" convert code failed.
continue
else
echo $fileName "=>" convert code success.
fi
done
done
使用方式:
sh convertCode.sh /home/sam/data gbk utf-8
例子二:簡(jiǎn)潔版
用法示例:
cd ~/workspace/XXXProject
~/iconv_shell.sh ./ *java
好了,直接上代碼~~
#!/bin/bash
if [ "$#" != "2" ]; then
echo "Usage: `basename $0` dir filter"
exit
fi
dir=$1
filter=$2
echo $1
for file in `find $dir -name "$2"`; do
echo "$file"
iconv -f gbk -t utf8 -o $file $file
done
這里還有些修改的余地,比如源和目標(biāo)編碼應(yīng)該作為參數(shù),我暫時(shí)沒(méi)有這個(gè)需求,懶得寫(xiě)了。
您可能感興趣的文章:- shell腳本實(shí)現(xiàn)統(tǒng)計(jì)文件大小、批量創(chuàng)建用戶的示例
- Shell腳本之文件批量創(chuàng)建與修改的簡(jiǎn)單方法
- Linux shell利用sed如何批量更改文件名詳解
- Shell腳本實(shí)現(xiàn)批量替換文件內(nèi)容
- 詳解linux下批量替換文件內(nèi)容的三種方法(perl,sed,shell)
- Shell腳本批量修改文件后綴名代碼分享
- Shell腳本批量重命名文件后綴的3種實(shí)現(xiàn)
- Shell腳本遍歷目錄并批量修改文件編碼
- shell批量創(chuàng)建文件并重新命名的實(shí)例代碼