首页 > 开发 > Linux Shell > 正文

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

2020-07-27 19:14:21
字体:
来源:转载
供稿:网友

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

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

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表