在論壇上看到有人在問ubuntu有類似convertz的工具軟體嗎?
引發的討論出現好東西
一個是轉檔案內文的iconv,利用它可以快速將BIG5跟UTF8編碼的中文資料轉碼。
一個是轉檔案名稱的convmv,只能用來修改中文檔名的編碼
可是他們都有共通的問題,要用終端機,打出正確的指令才會運作。不知道是哪邊的問題,我試過通常只能轉一個檔案,網路找到的指令也是僅限一個檔案。雖然早安裝了,但卻很少拿來用。(而且遇到文字中間夾有不明東西時,文章還會中斷......)
mosky前輩(在此向其脫帽致敬)非常好心的提供shell scrip。這玩意只要將文字內容貼在空白檔案,改變檔案屬性的權限,允許以程式執行,就能成為很棒的小工具。
可惜mosky前輩提供的內容,好像會出現無限迴圈的狀況,即使是修改後的新版,在遇到資料夾層數超過預設,或是其他的狀況,也還是有無限繁殖的問題。
(不過比我好,我竟然寫出不斷增殖、重複持續產生同樣檔案、刪除又會自動回復的東西來。惡意程式等級的語法)
將mosky前輩(再次脫帽致敬)作品反覆研究後,取消掉自動尋找子目錄的功能,讓小工具只會在同一層目錄進行轉碼,免的在眼睛看不到的地方,發生意想不到的意外。
而轉出的檔案,通通集中到家目錄的特定資料夾內,省的要用時又要東奔西跑找檔案。
家目錄版本的,同時轉檔名及轉檔案內文,然後產生新檔。
#!/bin/bash
#iconv_BIG5toUTF8
function START()
{
for fileName in `ls -F | grep '.txt'` #找尋資料夾內所有的TXT檔案
do
echo ' Converting: "'$fileName'"...'; #輸出轉換中訊息
convmv "$fileName" -f big5 -t utf8 -o "$fileName" #轉檔名
mkdir ~/newutf8
echo ' Converting: "'$fileName'"...'; #輸出轉換中訊息
iconv "$fileName" -f big5 -t utf8 -o ~/newutf8/"$fileName" #轉內容
done;
}
echo ; #程序開始訊息
START; #執行遞迴函數
echo 'Done!'; #完成訊息
這是會修改原檔名的作法。
改變順序後應該不會動到原檔案。(雖然舊檔在UBUNTU上通常已成廢物,但還是保留比較好。畢竟用LINUX的人習慣在把舊檔名加.bak,不保留舊檔會不舒服似的...)
#!/bin/bash
#iconv_BIG5toUTF8
function START()
{
for fileName in `ls -F | grep '.txt'` #找尋資料夾內所有的TXT檔案
do
mkdir ~/newutf8
echo ' Converting: "'$fileName'"...'; #輸出轉換中訊息
iconv "$fileName" -f big5 -t utf8 -o ~/newutf8/"$fileName" #轉內容
echo ' Converting: "'$fileName'"...'; #輸出轉換中訊息