miércoles, junio 05, 2013

Corrigiendo las tildes en nombres de archivo

Uno de los grandes problemas con lo que nos solemos encontrar los usuarios de GNU/Linux a la hora de compartir archivos con Windows, es por una parte, la escasa formación de los usuarios de este sistema operativo y, por otro lado, que Windows hace las cosas "a su manera", ya que es el sistema mayoritario y todos han de plegarse a los deseos de Microsoft.

El tema que nos ocupa hoy no es algo de vida o muerte, pero sí suele ser engorroso. Pese a los consejos acerca de no introducir tildes, eñes ni espacios en blanco en los nombres de archivo, mucha gente sigue continuando con esta mala práctica.

Mi última desventura con este tipo de sucesos tiene que ver con un curso en el que estaba metido. En un archivo comprimido se nos pasaban una par de prácticas (nótese la tilde, pues nos puede dar muchos dolores de cabeza). Pues bien, me dispongo a descomprimir el archivo (practica22.zip) y en su interior me encuentro con...


Como se puede ver, en el interior hay dos archivos "Práctica 22a.pdf" y "Práctica 22b.pdf" que, debido a la tilde, en mi sistema se muestra con una interrogación. Descomprimo el fichero...


Y, al intentar abrir el primero de ello me salta un error.


Si intentamos cambiarle el nombre para eliminar los caracteres raros y los espacios en blanco, seremos incapaces de hacerlo, incluso si recurrimos a la consola, la navaja suiza de todo linuxero.



Afortunadamente, no es el fin del mundo y tiene solución, aunque habrá que remangarse, enredar con la consola y explorar las tuberías del sistema de archivos ext4.

Pese a que nos refiramos a los archivos y directorios con nombres reconocibles como "/home" o "curriculum.odt", todos ellos son referenciados por el sistema con un número, y será ese número, al que llamamos inode, el usará el sistema para saber a que fichero o directorio nos estamos refiriendo. Conocer el inode de un archivo es fácil, en un consola basta con listar los archivos con la opción "-i"

ls -li 


En la imagen he marcado el inodo del primer archivo. La solución es fácil, haremos uso de la orden "find" que nos permite encontrar archivos y, además, realizar acciones sobre ellos.

En concreto, habrá que apuntar el número del inodo (6029332) y teclear la orden.

find . -inum 6029332 -exec mv {} practica22a.pdf \;

Y asunto arreglado, sólo nos queda repetir la acción con el otro archivo.


1 comentario:

Anónimo dijo...

Yo lo que hago en estos casos es ejecutar el script siguiente

#!/bin/bash
convmv -f windows-1252 -t utf-8 -r --notest $1

Mano de santo