分享下shell脚本中使用iconv实现批量文件转码的代码。
在开发中,经常需要对N多文件编码进行更改,iconv只能对单文件的进行更改,怎么办呢?
原文参考:
http://www.jbxue.com/article/13953.html
例子一:使用shell脚本实现批量转码的操作。
#!/bin/sh
# www.jbxue.com
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
这里还有些修改的余地,比如源和目标编码应该作为参数,我暂时没有这个需求,懒得写了。
相关文章
- 使用 PowerShell 脚本 + FFmpeg 在 Windows 系统中批量计算 MP4视频 文件的总时长
- .net 反射访问私有变量和私有方法 如何创建C# Closure ? C# 批量生成随机密码,必须包含数字和字母,并用加密算法加密 C#中的foreach和yield 数组为什么可以使用linq查询 C#中的 具名参数 和 可选参数 显示实现接口 异步CTP(Async CTP)为什么那样工作? C#多线程基础,适合新手了解 C#加快Bitmap的访问速度 C#实现对图片文件的压
- shell脚本实现将文件中的几行输出合并成一行显示
- dirname命令介绍-使用dirname在shell脚本中获取当前脚本文件所在的绝对路径
- 利用notepad++中安装python脚本实现批量转换文件编码
- shell脚本中实现自动输入密码---expect安装使用
- 使用python脚本实现统计日志文件中的ip访问次数
- unix(在bash shell中)的shell脚本,用于将文件从一个位置(即目录)复制到另一个位置,而不使用cp命令
- 使用Shell脚本实现SFTP下载文件
- 使用docker sdk for python捕获docker容器中shell脚本的输出到文件