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]