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
# viComo ya sabíamos, <-h> se le pasa a rm y éste lo interpreta como una opción y no como nombre del archivo.
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 ...
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 -liConclusión
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
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
Cool... its very helpful.
ResponderEliminarthanks