转换双字节数字和空格的文件名以ASCII
-
22-09-2019 - |
题
鉴于由双字节/全角数字和空格(有一些半角数字和下划线一起)的文件名的目录中,如何可以转换所有的数字和空间以单字节字符?
例如,此文件名由双字节数,后跟一个双字节空间,其次是一些单字节字符的:
2 2_3.ext
和我想将其更改为所有单字节像这样:
2 2_3.ext
我试过 convmv 从UTF8到ASCII转换,但下面对所有文件信息出现:
“ASCII不涵盖所有所需的字符:文件名”
解决方案 3
感谢您快速作出回应,bmargulies和bobince。我发现了一个Perl模块,的Unicode ::日本,这有助于把工作做好。这里是我做了(从的该示例中)到文件名转换在当前目录中从全宽为半角字符:
#!/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
其他提示
您需要:(1)从Java 1.6(java.text.Normalizer
)归一化,或(2) ICU 一>,或者(3(不可能))的地方我工作销售的产品。
什么工具,你有可用?有Unicode的归一化函数在若干脚本语言,例如在Python:
for child in os.listdir(u'.'):
normal= unicodedata.normalize('NFKC', child)
if normal!=child:
os.rename(child, normal)
不隶属于 StackOverflow