Frage

Bei einem Verzeichnis von Dateinamen, bestehend aus Doppel-Byte / voller Breite Zahlen und Leerzeichen (zusammen mit einigen Halbbreite Zahlen und Unterstrichen), wie kann ich alle Zahlen und Leerzeichen um Single-Byte-Zeichen umwandeln?

Zum Beispiel bestehen diese Dateinamen einer Double-Byte-Zahl, gefolgt von einem Double-Byte-Raum, gefolgt von einigen Single-Byte-Zeichen:

2 2_3.ext

und ich möchte es für alle Single-Byte ändern wie folgt:

2 2_3.ext

Ich habe versucht, convmv zu konvertieren von UTF8 in ascii, aber die folgenden Meldung erscheint für alle Dateien:

"ascii gehören nicht alle benötigten Zeichen für: Dateiname "

War es hilfreich?

Lösung 3

Vielen Dank für Ihre schnelle Antworten, bmargulies und bobince. Ich fand ein Perl-Modul, Unicode :: Japanisch , die getan den Job geholfen. Hier ist ein Bash-Skript Ich habe (mit Hilfe von in diesem Beispiel ) entsprechen den Dateinamen im aktuellen Verzeichnis aus voller Breite auf halber Breite Zeichen zu konvertieren:

#!/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

Andere Tipps

Sie müssen entweder (1) Normalisierung von Java 1.6 (java.text.Normalizer), oder (2) ICU oder (3 (unwahrscheinlich)) ein durch den Ort, wo ich Arbeit verkauft wird.

Welche Werkzeuge haben Sie zur Verfügung haben? Es gibt Unicode Normalisierung Funktionen in verschiedenen Skriptsprachen, zum Beispiel in Python:

for child in os.listdir(u'.'):
    normal= unicodedata.normalize('NFKC', child)
    if normal!=child:
        os.rename(child, normal)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top