2015-03-02 221 views
0

我需要在所有子文件夾中查找並替換日文文件名中的字符串。Linux在文件名中查找並替換日文字符串

我試過所有常見的查找和替換命令,但它們似乎不適用於日文字符。

注意:我不想刪除所有日文字符,只發現並替換文件名中的某個字符串。

+0

任何文件名示例?例如: – Rups 2015-03-02 09:42:50

+0

例如:東京_名.php,我想替換最後一個字符名 – chinaski 2015-03-03 02:14:34

回答

0

這些都是Unicode字符,所以你可以用例如

find | grep -P '[\x3041-\x3096]'(平假名)

find | grep -P '[\x30A0-\x30FF]'(片假名)

找到他們,但你需要找出確切的字符(UNICODE符號)你想先取代。

但是,它可能是你的編碼是不同的。如果您需要更改的編碼,然後使用convmv,例如

convmv -f EUC-JP -t UTF-8 * 

更新。此腳本適用於您的示例。我只是複製/粘貼角色。

SEARCH="名." 
REPLACE="_." 

for x in *$CHAR*; do 
rename "s/$SEARCH/$REPLACE/" $x 
done 
+0

謝謝,我認爲我們差不多在那裏,當我用find | grep -P'[\ x3041- \ x3096]'「我在字符類消息中出現亂序」,當我更改要搜索的字符的Unicode時,它只是打印文件夾中的所有文件,但沒有替換任何東西 – chinaski 2015-03-03 02:17:24

0

嘗試許多命令後這工作:

發現。 -type f | xargs重命名's/textofind/newtext/g'

我不必輸入unicode符號,我可以在命令行上直接輸入日文字符。

對於只是想找到並刪除該字符串的用戶,你可以使用這樣的命令:

發現。 -type f | xargs重命名's/textofind // g'