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
|