给定一个由双字节/全宽数字和空格组成的文件名目录(以及一些半宽数字和下划线),如何将所有数字和空格转换为单字节字符?
例如,这个文件名包含一个双字节数字,后跟一个双字节空格,后跟一些单字节字符:
2 2_3.ext
我想把它改成所有单字节,如下所示:
2 2_3.ext
我已尝试convmv将utf8转换为ascii,但所有文件都会显示以下消息:
“ascii未涵盖以下所有必需字符: filename ”
答案 0 :(得分:2)
您需要(1)从Java 1.6(java.text.Normalizer
)规范化,或(2)ICU,或(3(不太可能))我工作的地方销售的产品。
答案 1 :(得分:1)
您有哪些工具?在几种脚本语言中有Unicode规范化函数,例如在Python中:
for child in os.listdir(u'.'):
normal= unicodedata.normalize('NFKC', child)
if normal!=child:
os.rename(child, normal)
答案 2 :(得分:0)
感谢您的快速回复,bmargulies和bobince。我找到了一个Perl模块,Unicode::Japanese,帮助完成了工作。这是我创建的一个bash脚本(在this example的帮助下)将当前目录中的文件名从全角字符转换为半角字符:
#!/bin/bash
for file in *;do
newfile=$(echo $file | perl -MUnicode::Japanese -e'print Unicode::Japanese->new(<>)->z2h->get;')
test "$file" != "$newfile" && mv "$file" "$newfile"
done