最近研究了下ShellScript,寫了一個工具,來批量轉換文件的編易做图為UTF-8,理論上應該支持Linux和MacOSX,現貼出源易做图:
聲明:該Script有刪除源文件的操作,在使用前請先備份,因此而造成數據丟失的本人概不負責!
[plain]
#!/bin/bash
function usage() {
echo "";
echo "Usage: tencoder <dest_dir> <from_encode>";
echo "";
exit 1;
}
function test_encode() {
echo "Test encoded file." >> ~/test_encoded.tmp;
iconv -f $2 -t UTF8 ~/test_encoded.tmp > ~/test_encoded.tmp || exec sh -c "rm -f ~/test_encoded.tmp; exit 1;";
rm -f ~/test_encoded.tmp;
}
function delete_old_encoded_files() {
for file in `ls $1`
do
if test -d $1"/"$file; then
delete_old_encoded_files $1"/"$file;
fi
done
for file in `ls $1 | grep encoded_utf8`
do
rm -f $1"/"$file;
done
}
function doencode() {
#轉易做图為utf-8
for file in `ls $1`
do
local filepath=$1"/"$file
#只對文件編易做图轉換,文件夾略過
if [ ! -d $filepath ]; then
#如果轉換成功,刪除原文件,並把轉換後的文件重命名為原文件的名字
if (iconv -f $2 -t UTF8 $filepath > $filepath.encoded_utf8) ; then
rm -f $filepath;
mv $filepath.encoded_utf8 $filepath;
#否則,則轉失敗(可能是圖片文件),刪除轉換時產生的臨時文件,保留舊的原文件
else
rm -f $filepath.encoded_utf8;
fi
fi
done
}
#遍歷所有文件夾
function iterate() {
for file in `ls $1`
do
if test -d $1"/"$file; then
iterate $1"/"$file $2;
fi
done
doencode $1 $2;
}
#如果參數不等於2,顯示用法
if [ $# -ne 2 ]; then
usage
#如果參數1不是一個目錄的路徑,提示錯誤
elif [ ! -d $1 ]; then
echo "";
echo "No such diretory -> $1"
echo "";
exit 1;
else
#測試參數2(該編易做图是否正確)
test_encode $1 $2;
#刪除以前的encode過的文件
delete_old_encoded_files $1;
#開始遍歷
iterate $1 $2;
fi
#!/bin/bash
function usage() {
echo "";
echo "Usage: tencoder <dest_dir> <from_encode>";
echo "";
exit 1;
}
function test_encode() {
echo "Test encoded file." >> ~/test_encoded.tmp;
iconv -f $2 -t UTF8 ~/test_encoded.tmp > ~/test_encoded.tmp || exec sh -c "rm -f ~/test_encoded.tmp; exit 1;";
rm -f ~/test_encoded.tmp;
}
function delete_old_encoded_files() {
for file in `ls $1`
do
if test -d $1"/"$file; then
delete_old_encoded_files $1"/"$file;
fi
done
for file in `ls $1 | grep encoded_utf8`
do
rm -f $1"/"$file;
done
}
function doencode() {
#轉易做图為utf-8
for file in `ls $1`
do
local filepath=$1"/"$file
#只對文件編易做图轉換,文件夾略過
if [ ! -d $filepath ]; then
#如果轉換成功,刪除原文件,並把轉換後的文件重命名為原文件的名字
if (iconv -f $2 -t UTF8 $filepath > $filepath.encoded_utf8) ; then
rm -f $filepath;
mv $filepath.encoded_utf8 $filepath;
#否則,則轉失敗(可能是圖片文件),刪除轉換時產生的臨時文件,保留舊的原文件
else
rm -f $filepath.encoded_utf8;
fi
fi
done
}
#遍歷所有文件夾
function iterate() {
for file in `ls $1`
do
if test -d $1"/"$file; then
iterate $1"/"$file $2;
fi
done
doencode $1 $2;
}
#如果參數不等於2,顯示用法
if [ $# -ne 2 ]; then
usage
#如果參數1不是一個目錄的路徑,提示錯誤
elif [ ! -d $1 ]; then
echo "";
echo "No such diretory -> $1"
echo "";
exit 1;
else
#測試參數2(該編易做图是否正確)
test_encode $1 $2;
#刪除以前的encode過的文件
delete_old_encoded_files $1;
#開始遍歷
iterate $1 $2;
fi
使用方法:
將該段script復制保存為文件,如utf8encoder.sh,加上運行權限,使用格式如下:
# utf8encoder.sh <需要轉編易做图的文件夾> <源編易做图格式>
例:
# utf8encoder.sh /Users/tim/myfolder GB18030