ubuntu系统默认文件编码为utf-8,windows中一般为GBK,GB2312,GB18030在ubuntu上打开均为乱码,在网上查了下系统自带有个iconv命令可以直接转换文件编码,但默认只能一次一个文件也不能使用通配,所以就自己写了个脚本可以批量转换文件编码:
新建个文件例如iconv.sh,内容如下:
#!/bin/bash
# iconv file to utf-8
read -p "Directory or file ? input: d or f. " DF
directory() {
read -p "Input the directory,like:/home/lem/Music/: " DIR
[ ! -d $DIR ] && echo "$DIR not exist" && exit
[ ! -d ${DIR}utf-8 ] && mkdir ${DIR}utf-8
for I in `ls $DIR`;do
[ ! -f $DIR$I ] && echo "Missing $DIR$I is not a file." && continue
iconv -f GBK -t utf-8 $DIR$I > ${DIR}utf-8/$I.utf-8 2> /dev/null
done
echo "Success,new files in ${DIR}utf-8"
}
file() {
read -p "Input the file:" FILE
for I in $FILE ;do
[ ! -f $FILE ] && echo "$FILE not exist" && continue
iconv -f GBK -t utf-8 $FILE > $FILE.utf-8 2> /dev/null
done
}
case $DF in
d)
directory ;;
f)
file ;;
*)
echo "Input error,please input d or f."
exit ;;
esac
说下使用方法,例如你想转换/media/file/fils目录中的所有文件,先把上边的脚本保存任何你能找到的地方,例如/media/file/scripts/iconv.sh,然后切换到你想要转换编码的目录/media/file/files目录,然后执行:
# bash /media/file/scripts/iconv.sh
同样也可以指定单个文件为转换目标。
转载于:https://blog.51cto.com/yooke/932152