Si crea un archivo en UNIX / Linux con caracteres especiales, como touch \"la*
, no puede eliminarlo con rm "la*
. Tienes que usar el número de inodo (puedes agregarlo \
antes del nombre, lo sé, pero como usuario deberías adivinar que se usó en la creación del archivo).
Revisé la página de manual de rm, pero no se menciona el número de inodo. Hacer rm inodenumber
tampoco funciona.
¿Cuál es el comando para esto?
-xdev
opción, ya que otros sistemas de archivos montados también pueden tener archivos no relacionados con el mismo número de inodo.Tal vez me estoy perdiendo algo, pero ...
De todos modos, los nombres de archivo no tienen inodes, los archivos sí. Intentar eliminar un archivo sin eliminar todos los nombres de archivo que apuntan a él dañará su sistema de archivos.
fuente
Si realmente desea hacer esto, y su caso de uso no parece realmente necesario, puede probar las herramientas de depuración del sistema de archivos. Si estás dispuesto a perder todo, eso es.
Por ejemplo, para ext2 /
debugfs
3/4 el comando tiene una opción "kill_file" que parece tomar un inodo. Como se ha mencionado en otras respuestas, esto va a dañar el sistema de archivos, ya que habrá entradas de directorio que apunta a un archivo que no existe. Correrfsck
después puede reparar esto. Es poco probable que pueda hacer esto en un sistema de archivos montado.Pero le recomiendo encarecidamente que solo use el escape / cita apropiado y elimine dichos archivos con el
rm
comando regular como se mencionó en una respuesta anterior, y userm -i
para mayor seguridad al tratar con nombres de archivo que contienen caracteres globales como *fuente
Si bien recomiendo encarecidamente el enfoque de "escapar de los caracteres especiales", siempre existe el
clri
comando cuando realmente desea que se corrija el sistema de archivos.fuente
clri
generalmente solo está presente en los sistemas Oracle (por ejemplo, SunOS).Puede eliminar archivos que comienzan con un guión llamando
rm -- filename
.fuente
El desafío que tuve fue eliminar un nombre de archivo que comienza con un guión: rm siempre quiere interpretarlo como un nombre de host. Resolví esto usando:
fuente