2013-10-07 75 views
3

我要尋找一個解決一批標準化的文件名使用bash:規範化文件名:去掉空格,取代國際字符

  • 替換爲空「_」
  • 更換國際字符「ť,ž,ý,á,í,é,ő,ú,ű,ó,ü,ö...」英語相當於「 t,z,y,a,i,e,o,u,u,o,u,o...
+0

我首先想到的是用'tr':'TR 「ťžýáíéőúűóüö......」 「_tzyaieouuouo ......」' – lurker

+0

@mbratch,不知道這是否適用於一般情況。列表*所有*可能的音譯你可以在UTF-8中找到這聽起來不是一個好主意。 – Kamiccolo

+0

@Kamiccolo我會同意的,但是OP沒有說明字符集有多大,所以我把這個選項作爲評論放在那裏。如果真的需要所有的可能性,那麼就需要設置手動翻譯表,然後編寫一個腳本來翻譯。 – lurker

回答

5

您可以使用命令行工具iconv來實現此目的。它也支持音譯。這裏有一個簡單的例子:

echo "Viele Grüße" | 
iconv --to-code ASCII//TRANSLIT 

輸出結果是:Viele Grusse

您可以按如下方式使用它來正常化存儲在變量路徑名:

pathname="$(iconv --to-code ASCII//TRANSLIT <<< "${pathname// /_}")"