linux批量修改文件字符集shell腳本
需求:需要將 “/home/zichen/dxzs0305”目錄下所有PHP文件字符集由 UTF-8
轉換為GB2312 www.2cto.com
shell腳本內容:
[html]
#!/bin/bash -x
SUBFIX="php" #需要轉換的目標文件後綴 www.2cto.com
cd /home/zichen/dxzs0305 #目標文件根目錄
if [ -z $1 ];then
cd $PWD
else
if [ -d $1 ];then
cd $1
else
echo " $1 is not exist;"
exit 1
fi
fi
for i in $SUBFIX;
do
files=`find . -name "*.$i"`
for f in $files;
do
type=`file $f|awk -F':' '{print $2}' |awk '{print $1}'` #獲取文件類型
if [ $type != "ISO-8859" ];then
iconv -f UTF-8 -t GB2312 -o $f $f #使用 iconv函數進行轉換
# enca -L UTF-8 -x zh_cn $f #如果使用enca 進行轉換,需要安裝 enca 命令 sudo apt-get install enca
else
echo "$f encoding is :$type"
fi
done
done
iconv 函數參數簡介:
iconv命令用於轉換指定文件的編碼,默認輸出到標准輸出設備,亦可指定輸出文件。
用法: iconv [選項...] [文件...]
有如下選項可用: www.2cto.com
輸入/輸出格式規范:
-f, --from-code=名稱 原始文本編碼
-t, --to-code=名稱 輸出編碼
信息:
-l, --list 列舉所有已知的字符集
輸出控制:
-c 從輸出中忽略無效的字符
-o, --output=FILE 輸出文件
-s, --silent 關閉警告
--verbose 打印進度信息
-?, --help 給出該系統求助列表
--usage 給出簡要的用法信息
-V, --version 打印程序版本號