Rechnen Sie Double-Byte-Zahlen und Leerzeichen in Dateinamen in ASCII
-
22-09-2019 - |
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 "
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)