convertir nombres de archivo de latin1 a utf8

Alvaro Herrera alvherre en alvh.no-ip.org
Mar Mar 20 19:04:51 CLT 2007


Hola,

Hace unos meses, finalmente me vencí a la presión y cambié mi sistema de
Latin-1 a UTF8.  La verdad es que pese a que no estoy contento en mi
fuero interno con el nuevo sistema, pero me he dado cuenta que muchas
cosas están hechas y probadas solamente en UTF8 y muestran suficientes
bugs en Latin1 que es desagradable tener que usar "el otro sistema".

Ahora el problema que tengo es que mi colección de música tiene muchos
archivos que se llaman con letras no ASCII :-(  Y no he encontrado
ninguna forma de cambiar los nombres a UTF8.  Todas las herramientas
están enfocadas (iconv, recode) a cambiar el _contenido_ de los
archivos, pero la verdad es que con eso no he tenido ningún problema.

Así que la pregunta es: ¿sabe alguno de ustedes una fórmula mágica para
recodificar automáticamente el nombre de los archivos?  Un scriptcillo
en shell serviría perfectamente.

De hecho ya lo he intentado sin éxito: por ejemplo, un truco feo como
meter el nombre en un archivo y recodificar dicho archivo:

for file in *; do
	echo "$file" > nombre
	recode latin1..utf8 nombre
	nuevo_nombre=$(cat nombre)
	echo $nuevo_nombre
done

No funciona :-(  En lugar de convertir los caracteres, los hace
desaparecer.

Alguna idea genial?

Un ejemplo simple:

$ pwd
/home/alvherre/Media/Música/Clásicos/Wagner, Richard/Der Ring - Bayreuth Festival - Barenboim/Götterdämmerung CD2
$ ls -l
total 119360
-rw-r--r-- 1 alvherre alvherre  2123776 2006-09-10 22:46 01-Wer ist Gibichs Sohn _.mp3
-rw-r--r-- 1 alvherre alvherre  3655680 2006-09-10 22:46 02-Begr??e froh, o Held, die Halle.mp3
-rw-r--r-- 1 alvherre alvherre  3655680 2003-02-07 20:43 02-Begrüße froch, o Held, die Halle.mp3
-rw-r--r-- 1 alvherre alvherre  3389440 2006-09-10 22:47 03-Willkommen, Gast, in Gibichs Haus !.mp3
-rw-r--r-- 1 alvherre alvherre  4018176 2006-09-10 22:46 04-Deinem Bruder bat ich mich zum Mann.mp3
-rw-r--r-- 1 alvherre alvherre  2889728 2006-09-10 22:46 05-Bl?henden Lebens labendes Blut.mp3
-rw-r--r-- 1 alvherre alvherre  2889728 2003-02-07 20:44 05-Blühenden Lebens labendes Blut.mp3
-rw-r--r-- 1 alvherre alvherre  2342912 2006-09-10 22:47 06-Frisch auf die Fahrt.mp3
-rw-r--r-- 1 alvherre alvherre 10686464 2003-02-07 20:46 07-Hier sitz' ich zur Wacht.mp3
-rw-r--r-- 1 alvherre alvherre 10686464 2006-09-10 22:47 07-Hier sitz? ich zur Wacht.mp3
-rw-r--r-- 1 alvherre alvherre  8042496 2003-02-07 20:47 08-Altgewohntes Geräusch.mp3
-rw-r--r-- 1 alvherre alvherre  8042496 2006-09-10 22:46 08-Altgewohntes Ger?usch.mp3
-rw-r--r-- 1 alvherre alvherre 11253760 2003-02-07 20:49 09-Höre mit Sinn, was ich dir sage !.mp3
-rw-r--r-- 1 alvherre alvherre 11253760 2006-09-10 22:47 09-H?re mit Sinn, was ich dir sage !.mp3
-rw-r--r-- 1 alvherre alvherre  6223872 2003-02-07 20:49 10-Welche banger Träume Mären.mp3
-rw-r--r-- 1 alvherre alvherre  6223872 2006-09-10 22:47 10-Welche banger Tr?ume M?ren.mp3
-rw-r--r-- 1 alvherre alvherre  3463168 2006-09-10 22:47 11-Blitzend Gew?lk.mp3
-rw-r--r-- 1 alvherre alvherre  3463168 2003-02-07 20:50 11-Blitzend Gewölk.mp3
-rw-r--r-- 1 alvherre alvherre  8851456 2006-09-10 22:46 12-Br?nnhild?! Ein Freier kam.mp3
-rw-r--r-- 1 alvherre alvherre  8851456 2003-02-07 20:51 12-Brünnhild'! Ein Freier kam.mp3

Todos los archivos que tenían nombres no ASCII quedaron repetidos :-(
(obviamente en este caso tengo que borrarlos, pero ¿cómo haría para
convertir si no existieran los nombres correctos en UTF8?)

La salida del script de arriba para esta entrada es:

01-Wer ist Gibichs Sohn _.mp3
02-Begráe froh, o Held, die Halle.mp3
02-BegrüÃe froch, o Held, die Halle.mp3
03-Willkommen, Gast, in Gibichs Haus !.mp3
04-Deinem Bruder bat ich mich zum Mann.mp3
05-Blhenden Lebens labendes Blut.mp3
05-Blühenden Lebens labendes Blut.mp3
06-Frisch auf die Fahrt.mp3
07-Hier sitz' ich zur Wacht.mp3
07-Hier sitzï ich zur Wacht.mp3
08-Altgewohntes Geräusch.mp3
08-Altgewohntes Gerusch.mp3
09-Höre mit Sinn, was ich dir sage !.mp3
09-Hre mit Sinn, was ich dir sage !.mp3
10-Welche banger Träume Mären.mp3
10-Welche banger Trume Mren.mp3
11-Blitzend Gewlk.mp3
11-Blitzend Gewölk.mp3
12-Brnnhildï! Ein Freier kam.mp3
12-Brünnhild'! Ein Freier kam.mp3

Y si uno se fija en los repetidos, la version convertida es obviamente
incorrecta porque no es igual a la versión UTF8 que se ve en el listado
de arriba.

-- 
Alvaro Herrera                          Developer, http://www.PostgreSQL.org/
"Cada quien es cada cual y baja las escaleras como quiere" (JMSerrat)


Más información sobre la lista de distribución Linux