=======問題已解 回饋code給大家以後用=========
感謝各位大大細心的分享跟教導,這隻小script分享給
之後跟我一樣有大量xlsx轉csv的人,使用方法只要
sh script.sh "存取資料夾"
便會把你該資料夾所有xlsx轉成csv檔
但記得要裝 python的xlsx2csv
參考: sudo pip install xlsx2csv
========ˇscript============
#!/bin/bash
# this script have dependence package of Python "xlsx2csv"
sudo PATH =
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:~/bin
sudo export PATH
sudo echo "Start translate !"
mkdir $1
for f in `ls -1 *.xlsx`
do
xlsx2csv $f $1/${f%.*}.csv;
echo ${f%.*}
done
echo "Translation done"
~
==============================================
由於對linux 的bash一些比較特殊的寫法還不是那麼熟練
想跟各位linux先進請教一個寫bash時的問題
想做的事情是:
用bash的方式進行xlsx轉檔,這裡我呼叫了一個python
工具 xlsx2csv , 這個用法在 terminal時已經確定可以
使用 , 而且轉換效果很好
遇到的問題:
1. 一直出現中文檔名亂碼問題 , 原始檔案是big5沒錯
2. 不確定這麼寫能不能像teminal一樣直接叫到python
的xlsx2csv
錯誤範例:
========================================================================
#!/bin/bash
PATH = /bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
sudo echo "Start translate !"
sudo xlsx2csv 2011某中文檔名.xlsx Test_covert/2011某中文檔名.csv
echo "Translation done"
=======================================================================
這只是我在做初步測試用bash 仿製我在terminal做的行為,且在terminal已經確定
會有我要的結果 , 但bash上面我一直沒有確切的方向,查也都只查到bash的一般語法
會需要這麼做主要是會批量轉檔的需求,所以後續還要串loop還有讓檔名重新產生
用過一般的批量轉檔程式但出來的結果是資料 "看起來" 沒有任何問題,但一旦經過
任何程式呼叫後 , 會有大量的資料在呼叫過程中無故遺失,而用command line呼叫手轉
的資料則沒有這問題
雖然可以另外寫python code直接做這件事情,但目前我試過最快且最穩的是command line
這個方法,加上很想知道如果我在 bash 裡面要呼叫非一般shell的程式還有做字串重組
跟commnad重新產生 (有點像eval 但我還不確定bash叫什麼) , 對小弟來說算是一個有趣
的應用,想問各位先進是否有做過這件事情 ???