Cómo eliminar un archivo que comienza con ">" u otros caracteres inusuales [cerrado]

8

Accidentalmente he creado un archivo llamado

> option[value='2016']

¿Cómo puedo borrarlo?

My attempts:

$ rm "> option[value='2016']"
rm: cannot remove ‘> option[value='2016']’: No such file or directory
$ rm \> o*
rm: cannot remove ‘>’: No such file or directory
rm: cannot remove ‘o*’: No such file or directory
$ rm `> o*`                                                                               
rm: missing operand
Try 'rm --help' for more information.
$ rm \> option*
rm: cannot remove ‘>’: No such file or directory
rm: cannot remove ‘option*’: No such file or directory
$ rm '\> option*'                                                                         
rm: cannot remove ‘\\> option*’: No such file or directory
$
$ rm "\> option*"                                                                         
rm: cannot remove ‘\\> option*’: No such file or directory

Listado de archivos:

HAPPY_PLUS_OPTIONS/
o*
op*
> option[value='2016']
> option[value='ALFA ROMEO']
README.md
rspec_conversions/
.rubocop.yml
SAD/
SAD_PLUS_OPTIONS/
Michael Durrant
fuente
¿Has intentado usar comodines? rm * option *
RageAgainstTheMachine
La siguiente pregunta parece ridícula, pero ¿intentaste con los administradores de archivos GUI?
Incnis Mrsi

Respuestas:

16

otra opción

ls -i 

que dan (con el valor de inodo apropiado)

5233 > option[value='2016']   5689 foo

entonces

find . -inum 5233 -delete

opcionalmente (para previsualizar)

find . -inum 5233 -print

También puede agregar -xdevsi hay otro sistema de archivos debajo.

Archemar
fuente
9

También puede usar la opción "-" que según man:

 The rm command uses getopt(3) to parse its arguments, which allows it to
 accept the `--' option which will cause it to stop processing flag options at
 that point.  This will allow the removal of file names that begin with a dash
 (`-').  For example:
       rm -- -filename

Entonces intenté:

touch -- "> option[value='2016']"

Y lo eliminó con:

rm -- "> option[value='2016']"

La forma más fácil de verificar si el nombre de archivo se ingresó correctamente:

rm -- ">[tab]

Y deje que el autocompletado haga el trabajo.

PD: Por tentador que parezca, no cree un nombre de archivo "-rf *". Pueden pasar cosas malas.

-rw-r--r--    1 stephan  staff      0 Sep 13 14:11 -rf *

Siempre use "-i" para estar seguro.

iMac:~ stephan$ rm -i -- "-rf *"
remove -rf *? Y
Stephan Burlot
fuente
Esta es, de lejos, la mejor respuesta, con diferencia.
8

El problema inicial era un espacio principal, por lo tanto

rm " > option[value='2016']"
    ^ here

trabajos.

Se actualizó la pregunta sobre archivos que comienzan con> etc.

Michael Durrant
fuente
3

Para un enfoque interactivo (a menudo más seguro):

Si hay algunos archivos especiales con nombre en el directorio actual.

Puede usar rm ./y luego TabTabpara enumerar archivos y luego puede seleccionar el archivo y eliminarlo.

Shellmode
fuente
Ingrese Tabdos veces para buscar archivos.
Shellmode
1

Porque rmno hay nada mágico >. Solo necesita asegurarse de que el soporte angular llegue a él (= evitar que el shell lo interprete como una redirección).

> "> option[value='2016']"  #create it
rm "> option[value='2016']" #remove it

#remove all files in the current directory that have > in them
rm -- {,.}*\>*                 

Si utiliza un sistema moderno sensible, debería poder obtener los nombres con escape adecuado con la finalización de la pestaña.

PSkocik
fuente