Come rimuovere un file che inizia con ">" o altri caratteri insoliti [chiuso]


8

Ho creato accidentalmente un file chiamato

> option[value='2016']

Come posso cancellarlo?

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

Elenco dei file:

HAPPY_PLUS_OPTIONS/
o*
op*
> option[value='2016']
> option[value='ALFA ROMEO']
README.md
rspec_conversions/
.rubocop.yml
SAD/
SAD_PLUS_OPTIONS/

Hai provato a usare i caratteri jolly? rm * opzione *
RageAgainstTheMachine

La seguente domanda sembra ridicola, ma hai provato i file manager della GUI?
Incnis Mrsi,

Risposte:


16

un'altra opzione

ls -i 

che danno (con il valore dell'inode corretto)

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

poi

find . -inum 5233 -delete

opzionale (per l'anteprima)

find . -inum 5233 -print

puoi anche aggiungere -xdevse sotto c'è un altro filesystem.


9

Puoi anche usare l'opzione "-" che secondo 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

Quindi ho provato:

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

E rimosso con:

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

Il modo più semplice per verificare se il nome file è stato inserito correttamente:

rm -- ">[tab]

E lascia che il completamento automatico faccia il lavoro.

PS: Per quanto possa sembrare allettante, non creare un nome di file "-rf *". Potrebbero succedere cose brutte.

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

Usa sempre "-i" per sicurezza.

iMac:~ stephan$ rm -i -- "-rf *"
remove -rf *? Y

Questa è di gran lunga la risposta migliore, di gran lunga.

8

Il problema iniziale era uno spazio iniziale, quindi

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

lavori.

Aggiornata la domanda relativa ai file che iniziano con> ecc.


3

Per un approccio interattivo (spesso più sicuro):

Se ci sono alcuni file con nome speciale nella directory corrente.

È possibile utilizzare rm ./e quindi TabTabper elencare i file e quindi è possibile selezionare il file ed eliminarlo.


Inserisci Tabdue volte per trovare i file.
Shellmode

1

Perché rmnon c'è niente di magico in questo >. Devi solo assicurarti che la parentesi angolare arrivi (= impedisce alla shell di interpretarla come un reindirizzamento).

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

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

Se utilizzi un sistema moderno ragionevole, dovresti essere in grado di ottenere nomi con escape corretti con il completamento della scheda.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.