2011年3月10日 星期四

批次簡體轉繁體的script

常常下載檔案解開後卻發現裡面卻是簡體中文(utf8)
如果要轉成繁體中文(utf8)似乎沒有較好的指令可以用
用convmv會因為都是utf8而不能轉
所以自己寫了一個簡單的script來作這件事
註解都寫在裡面了
不喜歡就自己改吧!!



程式碼在這裡

!/bin/bash
###################
#Author:Max Wu                #
#Date:2011-Mar-10            #
###################

#將$1從簡體中文(utf8)轉成繁體中文(utf8)
dir=`echo "$1" | iconv -f utf8 -t gb2312 | iconv -f gb2312 -t big5 | iconv -f big5 -t utf8`
#更改目錄名稱
mv "$1" "$dir"
cd "$dir"
#計算行數
line=`ls|wc | awk '{print $1}'`
#把檔名轉成繁中後讀入var1中
for ((x=1; x<=$line; x=x+1))
do
var1[$x]=`ls|iconv -f utf8 -t gb2312| iconv -f gb2312 -t big5 | iconv -f big5 -t utf8|head -n "$x"|sed -n "$x"p`
done
#把目前簡中的檔名讀入var2中
for ((y=1; y<=$line; y=y+1))
do
var2[$y]=`ls|awk '{print $1}'|head -n "$y"|sed -n "$y"p`
done
#把var1和var2中的陣列讀出來並且一個一個更改檔案名稱為繁中的編碼
for ((z=1; z<=$line; z=z+1))
do
mv ${var2[$z]} ${var1[$z]} > /dev/null 2>&1
done
cd ..

#以下是將檔案轉換成big5格式並且再做分割壓縮
#不需要就不用看了

#將檔案做個備份
cp -r "$dir" "$dir-2"
#把utf8格式的檔名轉換為big5並且將過程寫入到t.txt
convmv -r -f utf8 -t big5 --notest "$dir" > t.txt
#取出t.txt最後一行,並取出第四個欄位的值,然後去掉./的字元

big5name=`tail -n 1 t.txt | awk 'BEGIN{FS="\""}{print $4}'|sed 's/.\///g'`
#把被改成big5編碼的檔案分割壓縮成20mb的rar檔案
rar a -v20480 "$dir.rar" "$big5name"
rm -r "$big5name"
rm t.txt
mv "$dir-2" "$dir"
用法
script.sh "簡體中文目錄名"