shell指令碼中使用iconv實現批量檔案轉碼的代碼分享_linux shell

來源:互聯網
上載者:User

在開發中,我們經常需要對N多檔案編碼變更,iconv只能對單檔案的變更,怎麼辦呢?我們寫一個shell指令碼來解決這個問題。

例子一:使用shell指令碼實現批量轉碼的操作。

#!/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

例子二:簡潔版

用法樣本:

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

這裡還有些修改的餘地,比如源和目標編碼應該作為參數,我暫時沒有這個需求,懶得寫了。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.