shell 脚步批量转换文件编码
2016-09-10 21:04
99 查看
#!/bin/bash
#author pengzhi
#email pengzhi@baidu.com
#brief 批量转换文件编码
source ./confs/conf.sh
function main()
{
file="${1}"
if [ -f "${file}" ];then
iconv_file "${file}"
elif [ -d "${file}" ];then
iconv_dir "${file}"
else
echo "....";
fi
}
function iconv_dir()
{
local dir="${1}";
echo -e "${ESC_START}${COLOR_INFO} Start iconv dir:${dir} ${ESC_END}";
local filelist=`ls "${dir}"`
local item;
for item in ${filelist}
do
if [[ "." == "${item}" || ".." == "${item}" ]];then
continue;
fi
local path="${dir}/${item}";
if [ -d "${path}" ];then
iconv_dir "${path}"
elif [ -f "${path}" ];then
iconv_file "${path}"
else
echo -e "${ESC_START}${COLOR_WARNING} Unknow type:${path} ${ESC_END}";
fi
done
echo -e "${ESC_START}${COLOR_INFO} End iconv dir:${dir} ${ESC_END}";
}
function iconv_file()
{
file="${1}"
echo -e "${ESC_START}${COLOR_INFO} Start iconv file:${file} ${ESC_END}";
t=`date +"%Y%m%d%H%H%s"`
dir=`dirname "${file}"`
tmp="${dir}/.tmp/${t}"
mkdir -p "${dir}/.tmp"
touch "${tmp}"
echo -e "${ESC_START}${COLOR_NOTICE} touch ${tmp} ${ESC_END}";
echo "iconv -c -f UTF-8 -t GB2312 ${file} > ${tmp}"
#(iconv -c -f "UTF-8" -t "GB2312" "${file}" > "${tmp}";exit $?)&
#wait
iconv -c -f "UTF-8" -t "GB2312" "${file}" > "${tmp}"
if [ "$?" -eq 0 ];then
echo "cp -rf ${tmp} ${file}";
cp -rf "${tmp}" "${file}";
else
echo -e "${ESC_START}${COLOR_WARNING} iconv ${file} fail! ${ESC_END}";
fi
rm "${tmp}" -rf
rm -rf "${dir}/.tmp"
echo -e "${ESC_START}${COLOR_INFO} End iconv file:${file} ${ESC_END}";
}
main $1
#author pengzhi
#email pengzhi@baidu.com
#brief 批量转换文件编码
source ./confs/conf.sh
function main()
{
file="${1}"
if [ -f "${file}" ];then
iconv_file "${file}"
elif [ -d "${file}" ];then
iconv_dir "${file}"
else
echo "....";
fi
}
function iconv_dir()
{
local dir="${1}";
echo -e "${ESC_START}${COLOR_INFO} Start iconv dir:${dir} ${ESC_END}";
local filelist=`ls "${dir}"`
local item;
for item in ${filelist}
do
if [[ "." == "${item}" || ".." == "${item}" ]];then
continue;
fi
local path="${dir}/${item}";
if [ -d "${path}" ];then
iconv_dir "${path}"
elif [ -f "${path}" ];then
iconv_file "${path}"
else
echo -e "${ESC_START}${COLOR_WARNING} Unknow type:${path} ${ESC_END}";
fi
done
echo -e "${ESC_START}${COLOR_INFO} End iconv dir:${dir} ${ESC_END}";
}
function iconv_file()
{
file="${1}"
echo -e "${ESC_START}${COLOR_INFO} Start iconv file:${file} ${ESC_END}";
t=`date +"%Y%m%d%H%H%s"`
dir=`dirname "${file}"`
tmp="${dir}/.tmp/${t}"
mkdir -p "${dir}/.tmp"
touch "${tmp}"
echo -e "${ESC_START}${COLOR_NOTICE} touch ${tmp} ${ESC_END}";
echo "iconv -c -f UTF-8 -t GB2312 ${file} > ${tmp}"
#(iconv -c -f "UTF-8" -t "GB2312" "${file}" > "${tmp}";exit $?)&
#wait
iconv -c -f "UTF-8" -t "GB2312" "${file}" > "${tmp}"
if [ "$?" -eq 0 ];then
echo "cp -rf ${tmp} ${file}";
cp -rf "${tmp}" "${file}";
else
echo -e "${ESC_START}${COLOR_WARNING} iconv ${file} fail! ${ESC_END}";
fi
rm "${tmp}" -rf
rm -rf "${dir}/.tmp"
echo -e "${ESC_START}${COLOR_INFO} End iconv file:${file} ${ESC_END}";
}
main $1
相关文章推荐
- 清理缓存的shell脚步
- 一些常用shell脚步
- Shell脚步中的递归函数以及遍历目录
- Shell脚步之监控iostat数据
- CMake调用shell脚步
- shell脚步配置ssh免密登录 - 第一版
- Shell 自解压安装脚步
- Shell脚步学习指南提点
- crontab 执行shell脚步失败 坑
- shell 获取脚步名称方法
- 使用 shell 脚步循环执行命令
- shell脚步错误“command not found 2:”
- shell 脚步
- shell脚步传参
- shell 脚步分析数据
- Shell脚步攻略之管道重定向基础
- [linux]shell脚步记录
- shell 脚步获取当前的函数名
- linux中shell脚步初体验(测试1+2+3+...10=?)
- php 读取shell管道传输过来的内容