0

给定一个由双字节/全角数字和空格(以及一些半角数字和下划线)组成的文件名目录,如何将所有数字和空格转换为单字节字符?

例如,此文件名由一个双字节数字、后跟一个双字节空格和一些单字节字符组成:

2 2_3.ext

我想将其更改为所有单字节,如下所示:

2 2_3.ext

我尝试使用 convmv从 utf8 转换为 ascii,但所有文件都会出现以下消息:

“ascii 没有涵盖所有需要的字符:文件名

4

3 回答 3

2

您需要 (1) Java 1.6 ( ) 的规范化java.text.Normalizer,或 (2) ICU,或 (3 (不太可能)) 我工作的地方销售的产品。

于 2010-01-02T19:42:05.437 回答
1

你有什么可用的工具?几种脚本语言中有 Unicode 规范化函数,例如在 Python 中:

for child in os.listdir(u'.'):
    normal= unicodedata.normalize('NFKC', child)
    if normal!=child:
        os.rename(child, normal)
于 2010-01-02T19:44:35.510 回答
0

感谢您的快速回复、bmargulies 和 bobince。我找到了一个 Perl 模块Unicode::Japanese,它有助于完成工作。这是我制作的 bash 脚本(在此示例的帮助下),用于将当前目录中的文件名从全角字符转换为半角字符:

#!/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
于 2010-01-03T03:08:02.310 回答