0

全角/全角の数字とスペース (一部の半角数字とアンダースコアを含む) で構成されるファイル名のディレクトリが与えられた場合、すべての数字とスペースを半角文字に変換するにはどうすればよいですか?

たとえば、次のファイル名は、2 バイトの数字、2 バイトのスペース、半角の文字で構成されています。

2 2_3.ext

そして、次のようにすべてシングルバイトに変更したいと思います:

2 2_3.内線

convmvを使用して utf8 から ascii に変換しようとしましたが、すべてのファイルに対して次のメッセージが表示されます。

"ascii は必要なすべての文字をカバーしていません:ファイル名"

4

3 に答える 3

2

java.text.Normalizer(1) Java 1.6 からの正規化 ( )、または (2) ICU、または (3 (可能性は低い)) 私の職場で販売されている製品のいずれかが必要です。

于 2010-01-02T19:42:05.437 に答える
1

どのようなツールを利用できますか? Python など、いくつかのスクリプト言語には Unicode 正規化関数があります。

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 に答える