Tengo un directorio con ~ 10,000 archivos de imagen de una fuente externa.
Muchos de los nombres de archivo contienen espacios y signos de puntuación que no son compatibles con DB o con Web. También quiero agregar un número de SKU al final de cada nombre de archivo (para fines contables). Muchos, si no la mayoría de los nombres de archivo también contienen caracteres latinos extendidos que quiero conservar para fines de SEO (específicamente para que los nombres de archivo representen con precisión el contenido del archivo en Google Imágenes)
He creado un script bash que cambia el nombre (copias) de todos los archivos a mi resultado deseado. El script bash se guarda en UTF-8. Después de ejecutarlo, omite aproximadamente 500 de los archivos (no se puede registrar el archivo ...).
He corrido convmv -f UTF-8 -t UTF-8 en el directorio, y descubrieron estos 500 nombres de archivo son no codificados en UTF-8 (convmv es capaz de detectar e ignorar los nombres de archivos que ya están en UTF-8)
¿Hay alguna manera fácil de averiguar qué codificación de idioma están usando actualmente?
La única forma en que me he podido dar cuenta es configurando mi codificación de terminal en UTF-8, luego iterando a través de todas las posibles codificaciones candidatas con convmv hasta que muestre un nombre convertido que 'se vea bien'. No tengo forma de estar seguro de que todos estos 500 archivos usan la misma codificación, por lo que necesitaría repetir este proceso 500 veces. ¡Me gustaría un método más automatizado que 'parece correcto'!
Puede resultarle útil para probar el directorio de trabajo actual (python 2.7):
El resultado se ve así:
Para repetir la ruta del directorio actual, córtela y péguela en un pequeño script de Python:
fuente