Cómo eliminar un archivo con este nombre en Linux: -] ??????? q [duplicar]

14

De alguna manera, un archivo llamado -]???????qse creó en mi terminal. Intenté rm -f "-] ??????? q" (entre comillas dobles), pero no se eliminó. (Error ::) rm: invalid option -- ]. ¿Cómo lo elimino?

djsmiley2k TMW
fuente
Tuve un problema similar, en mi caso el problema fue con la implementación de samba, solo intente ssh al servidor y luego elimínelo
Buksy 05 de

Respuestas:

26

Por ejemplo, con:

rm -- '-]???????q'

Donde --significa: "detener las opciones de análisis".

Ciro
fuente
De hecho, me encontré con un problema similar sin siquiera pensar en ser un interruptor. Juro que pasé como 2 horas tratando de resolverlo.
Jeff F.
Muchas aplicaciones usan --, supongo que es una especie de estándar de facto debido a la getoptfunción.
cYrus
13

Puede usar el nombre del archivo con rm o el número de inodo con find like:

rm -- -]???????q
# or
  -> ls -i                                                                                                                         
47984689 blah.ui  47983771 __init__.py  
47983773 testpy.e4p  47985161 Ui_blah.py

  -> find -inum 47983773                                                                                                           
./testpy.e4p

  -> find -maxdepth 1 -inum 47983773 -exec rm -i '{}' \;
#or
  -> find -maxdepth 1 -inum 47983773 -delete
Uno de uno
fuente
Agregue -maxdepth 1, de lo contrario, find iterará en todos los subdirectorios:find -maxdepth 1 -inum 47983773 -delete
Fabian Ritzmann
@FabianRitzmann buena llamada, lo agregué.
OneOfOne
1
Esta debería ser la respuesta elegida. Acceder al archivo con caracteres no válidos en su nombre por su iNode es la única forma correcta.
ScumCoder
1
rm ./"-]???????q"

Las comillas dobles evitan que el shell expanda las marcas de interrogación. Por ejemplo, si tuviera otro archivo llamado -] foobar.q :

$ touch ./"-]???????q" ./-]foobar.q
$ echo ./-]???????q
./-]foobar.q ./-]???????q
marco
fuente
Oh. Puse las citas, pero me faltaba el./