shell中怎么利用iconv实现批量文件转码,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
例子一:使用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中怎么利用iconv实现批量文件转码问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
原文链接:https://www.jb51.net/article/53211.htm