最近遇到工程里面c/c++代码注释utf8和gbk共存的情况,在服务器上使用vim编辑非常不方便.于是编写了一个shell程序遍历所有文件,并将所有文件中中文gbk编码转化为utf8。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#!/bin/sh

# 定义一个方法
foreachd(){
# 遍历参数1
for file in $1/*
do
# 如果是目录就打印处理,然后继续遍历,递归调用
if [ -d $file ]
then
# echo $file
foreachd $file
else
if [[ $file =~ ".h" || $file =~ ".cpp" ]]
then
echo $file
tempfile=`echo $file”.5″`
iconv -f gbk -t utf8 $file > $tempfile
mv $tempfile $file
fi
fi
done
}

#执行,如果有参数就遍历指定的目录,否则遍历当前目录
if [ $# -gt 0 ]
then
foreachd “$1″
else
foreachd “.”
fi

exit 0