Como remover um arquivo que comece com “” ou outros caracteres incomuns [fechados]

8

Eu acidentalmente criei um arquivo chamado

> option[value='2016']

Como posso deletar?

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

Lista de arquivos:

HAPPY_PLUS_OPTIONS/
o*
op*
> option[value='2016']
> option[value='ALFA ROMEO']
README.md
rspec_conversions/
.rubocop.yml
SAD/
SAD_PLUS_OPTIONS/
    
por Michael Durrant 13.09.2015 / 11:23

5 respostas

16

outra opção

ls -i 

que fornecem (com valor de inode adequado)

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

então

find . -inum 5233 -delete

optionnaly (para pré-visualizar)

find . -inum 5233 -print

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

    
por 13.09.2015 / 11:51
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 removido com:

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

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

rm -- ">[tab]

E deixe o preenchimento automático 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 ser seguro.

iMac:~ stephan$ rm -i -- "-rf *"
remove -rf *? Y
    
por 13.09.2015 / 14:18
8

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

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

funciona.

A pergunta foi atualizada sobre os arquivos que começam com > etc.

    
por 13.09.2015 / 11:29
3

Para uma abordagem interativa (geralmente mais segura):

Se houver alguns arquivos com nomes especiais no diretório atual.

Você pode usar rm ./ e depois Tab Tab para listar os arquivos e então você pode selecionar o arquivo e deletá-lo.

    
por 13.09.2015 / 17:31
1

Para rm , não há nada de mágico sobre > . Você só precisa ter certeza de que o colchete angular chega até 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, será possível obter nomes com escape adequados com a conclusão da guia.

    
por 13.09.2015 / 16:13

Tags