2012-02-16 20 views
5

que intento esto:¿Cómo cambiar la codificación en muchos archivos?

find . -exec iconv -f iso8859-2 -t utf-8 {} \; 

pero la producción va a la pantalla, no en el mismo archivo. ¿Cómo hacerlo?

+0

ver http://stackoverflow.com/questions/4544669/batch-convert-latin-1-files-to-utf-8-using-iconv –

+0

También puede ver el archivo con "gato " ¡Creo que el problema de tus archivos no es la codificación! tal vez su archivo puede incluir algunos códigos de color, por lo que no puede ver el archivo normal ... intente utilizar el comando "cat" y escriba nuevamente .. vea normalmente o no? –

Respuesta

11

Prueba esto:

find . -type f -print -exec iconv -f iso8859-2 -t utf-8 -o {}.converted {} \; -exec mv {}.converted {} \; 

Se usará el archivo temporal con el sufijo '.converted' (extensión) y luego lo moverá al nombre original, así que tenga cuidado si tiene archivos con sufijos '.converted' (no creo que tenga mi).

También este script no es seguro para los nombres de archivo que contienen espacios, por lo que para más seguridad, usted debe de comillas dobles: "{}" en lugar de {} y "{} .converted" en lugar de {} .converted

1

lea sobre enconv.
Si usted necesita para convertir a la codificación de la terminal actual, puede hacerlo así:

find . -exec enconv -L czech {}\; 

O exactamente lo que quería:

find . -exec enconv -L czech -x utf8 {}\; 
+0

¿Por qué no ejecutarías tu terminal en utf8 todo el tiempo de todos modos? Que sea la lingua franca del intercambio. – tchrist

+0

Funciono mi terminal en la codificación utf8 – 2r2w

1

Encontré que este método funcionaba bien para mí, especialmente cuando tenía múltiples codificaciones de archivos y múltiples extensiones de archivos.

Crear un script llamado vim script.vim:

set bomb 
set fileencoding=utf-8 
wq 

continuación, ejecutar la secuencia de comandos en las extensiones de archivo que desea orientar:

find . -type f \(-iname "*.html" -o -iname "*.htm" -o -iname "*.php" -o -iname "*.css" -o -iname "*.less" -o -iname "*.js" \) -exec vim -S script.vim {} \; 
1

Nadie propuso una manera de detectar automáticamente la codificación y recode.

Aquí hay un ejemplo para recodificar a UTF-8 todos los archivos HTM/HTML de la rama principal de un GIT.

git ls-tree master -r --name-only | grep htm | xargs -n1 -I{} bash -c 'recode "$(file -b --mime-encoding {})..utf-8" {}'

Cuestiones relacionadas