Pablo Jiménez escribió:
On Wed, Apr 30, 2008 at 01:05:34PM -0300, JAP wrote:
Estimados:

En mi trabajo diario, recibo muchos documentos de texto codificados en UTF16.
En cuanto a lectura, edición e impresión, no tengo problemas.
El tema tontuelo, es que tengo como organizador de escritorio a Google Desktop, el cual es mucho más eficiente, rápido y liviano que beagle. El problema, es que los archivos UTF16 los analiza en forma textual, byte por byte, es decir, si busco la palabra "composición", sólo la encuentra si está en ISO-8859 o en ASCII; no la encuentra si el documento es UTF8 o UTF16, que usan 2 byte por caracter. Para convertir el archivo, lo mejor que encontré es iconv, pero debo convertir archivo por archivo, no tiene una opción de grabarme el resultado en otro archivo mediante el uso de máscaras.

Me explico:
iconv -c -f UTF16 -t ASCII *.txt > *.new
me convierte TODOS los archivos del directorio, y los graba en UN SOLO ARCHIVO llamado "*.new".

Por día, recibo más de 20 de estos archivos. Son generados por un programa en Windows, y no hay forma de hacerlo que los grabe en otra codificación. El programa es propietario y viene así. Se darán cuenta que para buscar un grupo de archivos por su contenido, luego de 6 mese de trabajo, Googel Desktop en IMPRESCINDIBLE.

El pedido:
¿Existe algún programa o lo que fuera, que me permita convertir en lotes?
He hecho todo mis deberes con san Google, y no tengo suerte.

Faltaron los deberes con man find(1) ;-P

$ find . -type f -name "*.txt" -exec iconv -c -f UTF16 -t ASCII {} > {}.new \;

Saludos.

He hecho la tarea asignada.

Esto está funcionando... a medias....

$ find . -type f -name "*.*" -exec iconv -c -f UTF16 -t ASCII {} > {}.new \;


Lo de "a medias" va por el hecho que barre todos los archivos, pero iconv me 
graba todo el resultado en un archivo que se llama *{}.new*
Por algún motivo no convierte la cadena {} a los nombres de archivos en la 
etapa de salida de iconv, como el man find indica que debería hacerlo.
Le he puesto comillas en distintos lugares, y no va.

¿Alguna otra idea?

Disculpen lo pesado.

Javier




--
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Responder a