So löschen Sie eine Datei mit diesem Namen unter Linux: -] ??????? q [duplizieren]

14

Irgendwie wurde eine Datei mit dem Namen -]???????qauf meinem Terminal erstellt. Ich habe versucht, rm -f "-] ??????? q" (in doppelten Anführungszeichen), aber es wurde nicht gelöscht. (Error :: rm: invalid option -- ]). Wie lösche ich es?

djsmiley2k in der dunkelheit
quelle
Ich hatte ein ähnliches Problem, in meinem Fall war das Problem mit der Samba-Implementierung, versuche einfach, ssh auf den Server zu bringen und es dann zu entfernen
Buksy

Antworten:

26

Zum Beispiel mit:

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

Wobei --bedeutet: "Parsing-Optionen beenden".

cYrus
quelle
In der Tat stieß ich auf ein ähnliches Problem, an das ich nicht einmal dachte - ein Schalter zu sein. Ich schwöre, ich habe 2 Stunden damit verbracht, es herauszufinden.
Jeff F.
Viele Anwendungen verwenden --, denke, es ist eine Art De-facto-Standard aufgrund der getoptFunktion.
CYRUS
13

Sie können entweder den Dateinamen mit rm oder die Inode-Nummer mit find wie folgt verwenden:

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
OneOfOne
quelle
Wenn Sie -maxdepth 1 hinzufügen, wird find alle Unterverzeichnisse durchlaufen:find -maxdepth 1 -inum 47983773 -delete
Fabian Ritzmann,
@FabianRitzmann Guten Anruf, ich habe es hinzugefügt.
OneOfOne
1
Dies sollte die gewählte Antwort sein. Der Zugriff auf Dateien mit ungültigen Zeichen im Namen über den iNode ist der einzig richtige Weg.
ScumCoder
1
rm ./"-]???????q"

Doppelte Anführungszeichen verhindern, dass die Shell Abfragezeichen erweitert. Wenn Sie beispielsweise eine andere Datei namens -] foobar.q hatten :

$ touch ./"-]???????q" ./-]foobar.q
$ echo ./-]???????q
./-]foobar.q ./-]???????q
Marco
quelle
Oh. Ich habe die Zitate, aber fehlte den./