• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    shell脚本中使用iconv实现批量文件转码的代码分享

    在开发中,我们经常需要对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

    这里还有些修改的余地,比如源和目标编码应该作为参数,我暂时没有这个需求,懒得写了。

    您可能感兴趣的文章:
    • shell脚本实现统计文件大小、批量创建用户的示例
    • Shell脚本之文件批量创建与修改的简单方法
    • Linux shell利用sed如何批量更改文件名详解
    • Shell脚本实现批量替换文件内容
    • 详解linux下批量替换文件内容的三种方法(perl,sed,shell)
    • Shell脚本批量修改文件后缀名代码分享
    • Shell脚本批量重命名文件后缀的3种实现
    • Shell脚本遍历目录并批量修改文件编码
    • shell批量创建文件并重新命名的实例代码
    上一篇:awk中NR和FNR的区别小结和实例演示
    下一篇:使用iconv批量改变文件编码的shell脚本
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    shell脚本中使用iconv实现批量文件转码的代码分享 shell,脚本,中,使用,iconv,