Como remover um arquivo que começa com ">" ou outros caracteres incomuns [fechado]

8

Criei acidentalmente um arquivo chamado

> option[value='2016']

Como posso excluí-lo?

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

Listagem de arquivos:

HAPPY_PLUS_OPTIONS/
o*
op*
> option[value='2016']
> option[value='ALFA ROMEO']
README.md
rspec_conversions/
.rubocop.yml
SAD/
SAD_PLUS_OPTIONS/
Michael Durrant
fonte
Você já tentou usar curingas? rm * option *
RageAgainstTheMachine 13/15
A pergunta a seguir parece ridiculamente, mas você tentou os gerenciadores de arquivos da GUI?
Incnis MRSI

Respostas:

16

outra opção

ls -i 

que fornecem (com valor de inode apropriado)

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

então

find . -inum 5233 -delete

optionnaly (para visualizar)

find . -inum 5233 -print

você também pode adicionar -xdevse houver outro sistema de arquivos abaixo.

Archemar
fonte
9

Você também pode usar a opção "-" que, de acordo com o homem:

 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

Então eu tentei:

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

E o removeu com:

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

A maneira mais fácil de verificar se o nome do arquivo foi digitado corretamente:

rm -- ">[tab]

E deixe a conclusão automática fazer o trabalho.

PS: Por mais tentador que pareça, não crie um nome de arquivo "-rf *". Coisas ruins podem acontecer.

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

Sempre use "-i" para estar seguro.

iMac:~ stephan$ rm -i -- "-rf *"
remove -rf *? Y
Stephan Burlot
fonte
Esta é de longe a melhor resposta, de longe.
8

O problema inicial era um espaço de liderança,

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

trabalho.

Atualizou a pergunta sobre arquivos que começam com> etc.

Michael Durrant
fonte
3

Para uma abordagem interativa (geralmente mais segura):

Se houver alguns arquivos nomeados especiais no diretório atual.

Você pode usar rm ./e, em seguida, TabTabpara listar arquivos e, em seguida, selecionar o arquivo e excluí-lo.

Shellmode
fonte
Digite Tabduas vezes para encontrar arquivos.
Shellmode
1

Pois rmnão há nada de mágico >. Você só precisa garantir que o colchete angular chegue a ele (= impede que o shell o interprete como um redirecionamento).

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

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

Se você estiver em um sistema moderno e sensato, poderá conseguir nomes de escape apropriados ao concluir a tabulação.

PSkocik
fonte