Livrar-se de um arquivo chamado "-d" [duplicado]

18

Possible Duplicates:
How do I delete a file named "-p" from bash?
How to delete file with this name on linux: -]???????q
What command do I need to use to remove a file called '-rf'?

Eu acidentalmente criei um arquivo chamado: -d

Eu tentei usar aspas simples e duplas, bem como curingas para removê-lo, mas sempre que "rm" me mostra este erro:

Warning: --directory (-d) option is undocumented and no-op. Use -rf for deleting non-empty dirs rm: missing operand Try 'rm --help' for more information.

Como faço para me livrar do arquivo?

    
por phileas fogg 08.09.2011 / 22:24

4 respostas

44
rm -- -d

-- significa "fim das opções". Qualquer coisa adicional na linha de comando seguinte é interpretada como um argumento (ou seja, o nome do arquivo no seu caso), e não uma opção.

    
por 08.09.2011 / 22:28
28
rm ./-d

é a resposta para sua pergunta.

    
por 08.09.2011 / 22:25
8

O uso de '-' é de longe o mais fácil neste caso específico. No entanto, uma solução mais geral se você tropeçar em um arquivo com caracteres de controle não imprimíveis é referenciar o arquivo por inode:

% ls -ali aFileWithFunnyCharacters
      9215 -rw-r-----   1 chris  chris         0 Sep  8 16:55 aFileWithFunnyCharacters
% find . -xdev -inum 9215 -exec rm {} \;
% ls -ali aFileWithFunnyCharacters
aFileWithFunnyCharacters: No such file or directory
    
por 08.09.2011 / 23:00
0

O Gnu-find tem uma opção -delete:

find -name "-d" -delete

mais você poderia tentar

find -name "-d" -exec rm {} ";" 

mas a - -solution de cima é mais curta, e a maneira de parar a interpretação de flags com - é usada por muitos programas, usando a biblioteca getopt, então aprender é uma coisa útil em geral.

Mas encontrar / -delete é algo muito útil para aprender também. Observe que ambos os exemplos excluirão os arquivos com o nome "-d" recursivamente, o que pode não acontecer com frequência, mas se você tiver um arquivo chamado "-d", poderá ter mais deles. :)

    
por 09.09.2011 / 01:41

Tags