Linux, Borrar o renombrar archivos con caracteres "raros" en su nombre

From Wiki de Caballero
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Hay veces que archivos quedan mal grabados con nombres incorrectos y se pueden ver como nombre??.txt donde los caracteres problemáticos se muestran usando '?'. Esto sucede en Linux cuando se usa una codificación de caracteres diferente a la que usa el sistema por ejemplo.

Para tratar con este tipo de archivos se puede hacer dos cosas, borrarlos o modificar su nombre y que use la codificación apropiada.

Renombrar

Renombrar no es algo tan trivial ya que los caracteres '?' no se pueden escribir en el terminal. Para esto se usa mv y TAB, se escribe mv y luego el o los primeros caracteres del archivo y se usa TAB para rellenar el nombre, luego se tipea el nombre nuevo a asignar.

Este método no funciona si hay dos archivos con el principio del nombre igual hasta que uno de los dos tiene un caracter desconocido.

Cambiar codificación

Este método es parecido al anterior en el sentido de que el archivo se mantiene pero el nombre se corrige, la diferencia es que con este método lo que se hace es "reparar" el nombre del archivo que probablemente tiene una codificación a la usada en el sistema actual; esto puede ocurrir si se subió el archivo usando windows por ejemplo.

Para corregir la codificación se usa el comando convmv (algo así como convert move).

convmv -r -f latin1 -t utf-8 DIR               # Cambia el nombre de DIR pasando de codificación latin1 a utf8, PERO solo hace la prueba no lo cambia, solo muestra el resultado
convmv --notest -r -f latin1 -t utf-8 DIR # Cambia el nombre de DIR pasando de codificación latin1 a utf8


Borrar

Borrar usando inode

El inode (index node) es una estructura informática que identifica el archivo adentro del sistema operativo, tiene un número identificador al que se hace referencia normalmente usando la palabra inode..

Para borrar usando inode hay que conocer el inode primero. Para esto, adentro de la carpeta donde está el archivo problemático se hace un ls -i, comando que muestra el inode de los diferentes archivos del directorio.

Luego, usando find se borra los inode deseados así:

find . -inum INODE -exec rm -i {} \;


Borrar usando rm

Este método es similar al método usado para renombrar, en este caso se usa rm y TAB para borrar archivos, solo funciona si no hay dos archivos que comiencen con el mismo nombre. Se escribe las primeras letras del archivo y se completa con TAB.