So entfernen Sie eine Datei, die mit ">" oder anderen ungewöhnlichen Zeichen beginnt [geschlossen]

8

Ich habe versehentlich eine Datei namens erstellt

> option[value='2016']

Wie kann ich es löschen?

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

Dateiliste:

HAPPY_PLUS_OPTIONS/
o*
op*
> option[value='2016']
> option[value='ALFA ROMEO']
README.md
rspec_conversions/
.rubocop.yml
SAD/
SAD_PLUS_OPTIONS/
Michael Durrant
quelle
Haben Sie versucht, Platzhalter zu verwenden? rm * option *
RageAgainstTheMachine
Die folgende Frage sieht lächerlich aus, aber haben Sie GUI-Dateimanager ausprobiert?
Incnis Mrsi

Antworten:

16

andere Option

ls -i 

welche geben (mit richtigem Inode-Wert)

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

dann

find . -inum 5233 -delete

optionnaly (zur Vorschau)

find . -inum 5233 -print

Sie können auch hinzufügen, -xdevob sich darunter ein anderes Dateisystem befindet.

Archemar
quelle
9

Sie können auch die Option "-" verwenden, die laut Mann:

 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

Also habe ich versucht:

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

Und entfernte es mit:

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

Der einfachste Weg, um zu überprüfen, ob der Dateiname korrekt eingegeben wurde:

rm -- ">[tab]

Und lassen Sie die automatische Vervollständigung den Job erledigen.

PS: So verlockend es auch klingt, erstellen Sie keinen Dateinamen "-rf *". Es können schlimme Dinge passieren.

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

Verwenden Sie aus Sicherheitsgründen immer "-i".

iMac:~ stephan$ rm -i -- "-rf *"
remove -rf *? Y
Stephan Burlot
quelle
Dies ist bei weitem die beste Antwort bei weitem.
8

Das anfängliche Problem war also ein führender Raum

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

funktioniert.

Die Frage wurde aktualisiert, um sich auf Dateien zu beziehen, die mit> usw. beginnen.

Michael Durrant
quelle
3

Für einen interaktiven Ansatz (oft sicherer):

Wenn sich im aktuellen Verzeichnis einige spezielle benannte Dateien befinden.

Sie können Dateien verwenden rm ./und dann TabTabauflisten und dann die Datei auswählen und löschen.

Shellmode
quelle
Geben Sie Tabzweimal ein, um Dateien zu finden.
Shellmode
1

Denn rmes gibt nichts Magisches >. Sie müssen nur sicherstellen, dass die spitze Klammer dorthin gelangt (= verhindern, dass die Shell sie als Umleitung interpretiert).

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

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

Wenn Sie sich auf einem vernünftigen modernen System befinden, sollten Sie in der Lage sein, ordnungsgemäß maskierte Namen mit Tab-Vervollständigung zu erhalten.

PSkocik
quelle