Convertir los números de doble byte y espacios en los nombres de archivo a ASCII
-
22-09-2019 - |
Pregunta
Dado un directorio de nombres de archivo que consta de dos bytes / números y espacios (junto con algunos números de ancho medio y guiones) de ancho completo, ¿cómo puedo convertir todos los números y espacios para caracteres de un byte?
Por ejemplo, este nombre de archivo consiste de un número de doble byte, seguido por un espacio de doble byte, seguido por algunos caracteres de un solo byte:
2 2_3.ext
y me gustaría cambiar a todos de un solo byte, así:
2 2_3.ext
He intentado convmv convertir de UTF-8 a ASCII, pero el siguiente aparece un mensaje para todos los archivos:
"ascii no cubre todos los caracteres necesarios para: nombre "
Solución 3
Gracias por sus respuestas rápidas, bmargulies y bobince. Me encontré con un módulo de Perl, Unicode :: japonesa , que ayudó a hacer el trabajo. Aquí es un script bash que hice (con la ayuda de
#!/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
Otros consejos
Se necesita ya sea (1) la normalización de Java 1.6 (java.text.Normalizer
), o (2) UCI , o (3 (poco probable)) un producto vendido por el trabajo lugar I.
¿Qué herramientas que tiene disponible? Hay funciones de normalización Unicode en varios lenguajes de script, por ejemplo en Python:
for child in os.listdir(u'.'):
normal= unicodedata.normalize('NFKC', child)
if normal!=child:
os.rename(child, normal)