Livrar-se de um arquivo chamado “-d” [duplicado]

18

Possíveis duplicatas:
Como faço para excluir um arquivo chamado "-p" do bash?
Como excluir um arquivo com este nome no linux: -] ??????? q
Que comando eu preciso usar para remover um arquivo chamado `-rf`?

Criei acidentalmente um arquivo chamado: -d

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

Aviso: a opção --directory (-d) não está documentada e não está em operação. Use -rf para excluir diretórios não vazios rm: Operando ausente Tente `rm --help 'para obter mais informações.

Como faço para me livrar do arquivo?

phileas fogg
fonte

Respostas:

44
rm -- -d

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

Matteo Riva
fonte
28
rm ./-d

é a resposta para sua pergunta.

bmargulies
fonte
11
rm -- -dfunciona também
Ulrich Dangel
Esta é a melhor solução
gd1 08/09/11
8

Usar '-' é de longe o mais fácil nesse caso específico. No entanto, uma solução mais geral se você se deparar com um arquivo com caracteres de controle não imprimíveis é fazer referência ao 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
che2cbs
fonte
0

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

find -name "-d" -delete

mais você poderia tentar

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

mas a - solução a partir de cima é mais curta e a maneira de interromper a interpretação de sinalizadores - é usada por muitos programas, usando a biblioteca getopt, portanto, aprender isso é útil em geral.

Mas encontrar / excluir também é algo muito útil para aprender. Observe que os dois 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. :)

Usuário desconhecido
fonte