SafeChildren Banner

viernes, 19 de marzo de 2010

Como eliminar archivos utilizando su inode

Introducción
Puede que alguna vez nos encontremos con un nombre de archivo un tanto extraño -por ejemplo con "-" o "/"- y desde la línea de comandos -con rm- no podemos borrarlo.

No hay problema, para ello, debemos utilizar el valor de su inode y utilizaremos el comando find para poder borrarlo. Vamos a ver un pequeño ejemplo, donde crearemos un archivo con nombre -h y lo intentaremos borrar con rm
# vi
  este archivo no se puede  borrar con rm
:w-h
:q
# ls -ltr
total 16
-rw-r--r--   1 root     root           7 mar 19 10:29 -h
# rm *
rm: opción no permitida -- h
sintaxis: rm [-fiRr] archivo ...
Como ya sabíamos, <-h> se le pasa a rm y éste lo interpreta como una opción y no como nombre del archivo.

Vamos a utilizar el comando <find> con la opción <-inum> y el inode del archivo para poder eliminarlo, el formato será el siguiente
# find _path_ -inum _inode_ -exec rm {} \;
Lo primero  que debemos conocer es el número de nodo <inode> y para ello, utilizaremos la opción <-i> de <ls> y posteriormente, ejecutaremos nuestro comando find para eliminarlo, veamos un ejemplo
# ls -li
total 16
  30475938 -rw-r--r--   1 root     root           7 mar 19 10:29 -h
# find . -inum 30475938 -print
./-h
# find . -inum 30475938 -exec rm {} \;
# ls -li
total 0
Conclusión
Aunque serán en contadas ocasiones este pequeño tip nos solucionará problemas, sobre todo si tenemos un servidor de archivos y tenemos MacOS y/o Windows como clientes.



Referencias

1 comentario: