Renombrar archivos con caracteres especiales

Cuando se crea un archivo con determinados caracteres especiales, puede llegar a ser dificil eliminarlo o renombrarlo. Si el archivo se ha copiado desde internet o desde un dispositivo externo  y el conjunto de caracteres establecido en el sistema es UTF-8, generalmente no hay problema; se puede acceder a él desde el entorno de ventanas o la terminal. Pero si se ha generado automáticamente (al ser descomprimido, por ejemplo), linux no reconocerá los caracteres y no se podrá leer ni eliminar.

La solución es acceder a él usando una terminal mediante su nodo, evitando el problema que supone usar su nombre.

(一般コミック) [大友克洋] AKIRA 第01巻.zip

Este archivo se ha creado en windows. Al copiarlo conserva los kanji japoneses y KDE permite operar con él normalmente, pero al descomprimirlo aparecen otros archivos cuyos nombres no son interpretados como válidos

?????S?t????1_????.png
?????S?t????1_?-??.png
?????S?t????1_???-?+??.png
?????S?t????1_???-????.png
?????S?t????1_???-?-??.png

Usando find se puede acceder a ellos y cambiar su nombre.

Para cambiar uno sólo, primero se obtiene su índice de nodo con ls -i

$ ls -i

12323499     ?????S?t????1_????.png
12323351     ?????S?t????1_?-??.png
12323581     ?????S?t????1_???-?+??.png
12323418     ?????S?t????1_???-????.png
12323479     ?????S?t????1_???-?-??.png

Despúes usando find…

$ find . -maxdepth 1 -inum 12323499  -exec mv '{}' ./akira_01.png \;

Y el archivo cambia de nombre.

Para cambiarlos todos en masa, asignando un número incremental

$ let c=0; \
for i in `ls *.png -i|cut -d ' ' -f1`; do let c=c+1 ; \
find *.png -maxdepth 1 -inum $i -exec mv '{}' ./AKIRA_01_$c.png \; ; \
done

Los archivos quedan como

AKIRA_01_1.png
AKIRA_01_2.png
AKIRA_01_3.png
AKIRA_01_4.png
AKIRA_01_5.png

Atención: hay que tener en cuenta que el penúltimo ; termina la orden dada con exec, así que si no se añade, bash devolverá un error de find: falta el argumento de `-exec’. Además es conveniente añadir el caracter de escape \ para prevenir posibles efectos derivados de la interpretación de los caracteres especiales.

Esta entrada fue publicada en GNU / linux y etiquetada , . Guarda el enlace permanente.

Leave a Reply