→ CP64: for f in `ls -1 *.xlsx` 01/27 18:04
→ CP64: do xlsx2cxv $f Test_convert/${f%.*}.csv 01/27 18:05
→ CP64: 問的是這種嗎 ? 01/27 18:05
→ CP64: 啊 少了 done 01/27 18:05
→ CP64: 關於字串改寫可以參考 bash manpage 的 Parameter Expansion 01/27 18:08
→ tjjh89017: 真不愧是CP64大師<(_ _)> 01/27 18:18
→ JackBaska: 感謝CP64大大,我可以叫到我要的檔案了,不過shell問題我 01/27 20:55
→ JackBaska: 還沒搞定,會一直顯示找不到 xlsx2csv的方法,我還在研究 01/27 20:56
→ JackBaska: 怎麼得到一般操作的完整shell PATH 資訊 01/27 20:56
→ CP64: 你下個 sudo env 看輸出應該就會知道發生啥事了 01/27 21:13
→ CP64: 你的 sudo 吃不到你下的 PATH 01/27 21:14
→ CP64: 不過有點好奇有需要用 sudo 嗎? 何不產在 /tmp 再搬過去 01/27 21:18
→ JackBaska: 小弟算新手,最近越來越受不了windows的command怒切了點 01/27 21:20
→ JackBaska: 空間裝linux,大概用一個禮拜已經愛上了 XD 01/27 21:21
→ JackBaska: 最近還在拜讀鳥哥的文章,但其實很多觀念還在建立 01/27 21:21
→ JackBaska: 常常用sudo是因為有時候對一些指令還不熟悉,偏偏需要權 01/27 21:22
→ JackBaska: 限, 不過我現在還有點茫 因為兩個 PATH是一樣的 01/27 21:22
→ CP64: 感覺轉換程式應該是不至於用到 sudo 的 01/27 21:26
→ CP64: 啊 不對 我看錯了一點東西 01/27 21:27
→ JackBaska: path問題解掉了,現在在解令一個執行噴錯 XD 01/27 21:27
→ JackBaska: 另 01/27 21:27
→ JackBaska: 現在執行成功了,但原本的檔名encoding問題又回來了 01/27 21:28
→ JackBaska: 成功呼叫到xlsx2csv,但是檔名encoding問題跑出來了 01/27 21:29
→ CP64: 現在是轉完的檔名會亂碼嗎? 還是檔名亂碼導致讀不到檔? 01/27 21:33
→ JackBaska: 檔名亂碼導致xlsx2csv在讀檔階段噴錯,我現在在查要怎麼 01/27 21:34
→ JackBaska: 在bash裡面做一部分字串的轉碼 01/27 21:35
→ CP64: 建議用 iconv 01/27 21:36
→ CP64: 啊 應該是說用 convmv 01/27 21:38
→ CP64: 先把檔名轉一轉 01/27 21:38
→ JackBaska: 下午我在試時 iconv 我撞到xlsx不知道要怎麼處理 QQ 01/27 21:46
→ JackBaska: convmv 是還沒弄懂下法 現在在試 QQ 01/27 21:47
→ kenduest: 有幾個問題確認一下: 01/28 00:03
→ kenduest: 1. 一開始問題,你 script 的變數語法宣告有問題 01/28 00:04
→ kenduest: PATH=path1:path2:path3 這樣子,= 符號兩邊不可以空白 01/28 00:04
噓 kenduest: 2. 你改了 PATH 變數,不一定會讓 sudo 執行時候套用 01/28 00:11
→ kenduest: 不小心按到「噓」的選項 -.-" 01/28 00:12
→ kenduest: 3. sudo 的 PATH 很多解法,一般最簡單可以改目的帳號 01/28 00:12
→ kenduest: 的 shell 設定檔案設定,後續使用 sudo -i 方式來執行 01/28 00:13
→ kenduest: 吃目的身份的 shell 初始化環境設定配置就可以了 01/28 00:13
推 kenduest: 4. 你的當下語系是 zh_tw.Big5 還是 zh_TW.UTF8 呢 01/28 00:15
→ kenduest: 執行 locale 看一下 LANG 與 LC_ALL 變數確認一下 01/28 00:15
→ kenduest: 目前這個年代應該不大會預設使用 zh_TW.Big5 這類編碼 01/28 00:16
→ kenduest: 不過還是可以確認一下比較好確認問題點 01/28 00:17
→ kenduest: 至於樓上其他朋友提到 convmv 主要是解決檔名的編碼 01/28 00:17
→ kenduest: 與所處使用的語系編碼不同的檔案名稱修改工具 01/28 00:18
→ kenduest: 一般大多用於 file server 可能以往是使用 Big5 的編碼 01/28 00:18
→ kenduest: 後續系統預設 locale 改成 utf8 這類,系統的程式要 01/28 00:18
→ kenduest: 能夠正常識別顯示,尤其像是 samba 這類就顯得重要 01/28 00:19
→ JackBaska: 感謝兩位大大的講解,我設定是全utf8,convmv我有看過討 01/28 00:29
→ JackBaska: 論改檔名的事情,只是我需要的是批量改檔名,所以我還在 01/28 00:29
→ JackBaska: 摸索,由於取得資料的資料源全都是萬惡MS的big5,最小單 01/28 00:31
→ JackBaska: 位的資料大概都會到30檔案,每個檔案約有數萬比資料 01/28 00:31
→ JackBaska: 所以小弟linux新手得越級打怪 QQrz 我是先手動轉檔處理 01/28 00:32
→ JackBaska: 很迫切要的前二十多份,但類似的問題我覺得還會遇到所以 01/28 00:33
→ JackBaska: 有點越級打怪還是來跟大家請教了 QQ 01/28 00:33
→ JackBaska: 雖然可以load到python裡面然後再做轉檔,但我目前試速度 01/28 00:35
→ JackBaska: 最快效果最好的方式是直接讓shell叫,用shell default的 01/28 00:35
→ JackBaska: 語系跳過python我要處理open read & write的問題直接轉 01/28 00:36
→ kenduest: 不過還是沒看出來你轉檔失敗的主要問題點在哪 01/28 00:43
→ kenduest: 目前你 script 改好程式碼內容怎樣,執行跑有錯誤嗎 01/28 00:44
→ kenduest: 那錯誤訊息要給一下要不然還是有點困惑 01/28 00:44
→ kenduest: 看不出來是 shell script 還是 python script 的問題 01/28 00:45
→ JackBaska: 它輸出 xlsx2csv 出現執行錯誤,而執行噴錯內容就是常見 01/28 00:46
→ JackBaska: 的big5碼,並表示這些字元在裡面是不允許的,所以我覺得 01/28 00:47
→ JackBaska: 是檔名編碼問題,過去傳資料進方法或函數跳此類錯誤都是 01/28 00:48
→ JackBaska: 把encoding處理好就解掉了 01/28 00:48
→ kenduest: 所以你系統還是使用 big5 的 locale 環境? 01/28 00:55
→ JackBaska: UTF8是資料源的機構是全面big5+excel,兩個讓我頭大的 01/28 01:35
→ JackBaska: 東西,big5 要轉碼 excel會把讀檔時間拉長 01/28 01:36
→ JackBaska: 所以我是在系統內直接做轉檔,因為我default是utf8所以 01/28 01:36
→ JackBaska: xlsx2csv會自動幫我轉成utf8 01/28 01:37
→ JackBaska: 第一句話沒打好 我是utf8 取資料單位是全面big5 01/28 01:38
推 Hevak: 「which xlsx2csv」看看那東西到底有沒有在你新寫的PATH裡? 01/28 07:30
→ Hevak: 也可以先在script內「source ~/.bashrc」看看能不能正常跟 01/28 07:31
→ Hevak: terminal一樣動,這個指令就是載入你的.bashrc那些變數 01/28 07:31
→ Hevak: 放在行頭可能有效,不肯定@@ 01/28 07:32
→ Hevak: 檔頭第1行 01/28 07:32
→ JackBaska: 感謝H大,不過PATH的問題已經解了,現在在解中文檔名編碼 01/28 08:13
※ 編輯: JackBaska (140.109.196.140), 02/01/2016 17:21:18
→ CP64: 呃 後來查了一下 設定 PATH 的地方不用 sudo 02/02 00:32
→ CP64: 也不能用 sudo 因為那是 bash 的內建功能 sudo 不吃 02/02 00:32
→ CP64: 之前那邊誤導到了不好意思 @@ 02/02 00:32
→ CP64: 就只要 PATH=$PATH:~/bin; export PATH; 就可以了 02/02 00:43
→ CP64: 如果說要確定 sudo 有吃到你前面下的變數用 sudo -E 02/02 00:44