http://www.jb51.net/article/51308.htm
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
#!/bin/sh ## ## convert file from GB2312 to UTF-8 ## path= "$1"
unset opt
if [ "$2" = "force" ]; then
opt= "-c -s"
fi if [ -z "$path" ]; then
echo "nUsage: $0 <file or dir>n"
elif [ ! -e "$path" ] ; then
echo "nERROR: destination: $path does not exist.n"
fi if [ -f "$path" ] ; then
echo "Converting $path (gbk --> utf-8) ... "
if file "$path" | grep -q UTF-8 > /dev/null ; then
echo "Already converted"
else
iconv -f gbk $opt -t utf-8 "$path" > /tmp/ $$.tmp
if [ $? - eq 0 ] ; then
echo "Success"
mv -f /tmp/ $$.tmp "$path"
else
echo "Failed"
fi
fi
elif [ -d "$path" ] ; then
path=` echo "$path/" | sed 's//////' `
find "$path" -path "$path.*" -prune -o - type f -print| while read i
do
dir =` dirname $i`
file =` basename $i`
echo "Converting $dir/$file (gbk --> utf-8) ..."
iconv -f gbk -t utf-8 $opt "$i" > /tmp/ $$.tmp 2> /dev/null
if [ $? - eq 0 ] ; then
echo "Success"
mv -f /tmp/ $$.tmp "$i"
else
echo "Failed"
fi
done
fi |