grep "<3" -- *
Com --
você pode determinar o fim das opções e o início dos argumentos posicionais para muitos programas GNU. Assim, um arquivo -l
não causa nenhum dano.
Uma alternativa é
grep "<3" ./*
Estou tentando encontrar todos os arquivos em meu diretório, que contêm a string "< 3". Isso deve ser simples:
grep "<3" *
No entanto, a execução desta imprime
grep: <3: No such file or directory
e, em seguida, continua a grep todos os arquivos para outra coisa ... (Eu não sei exatamente o que, mas as linhas aparecem contendo não 3 em tudo ...)
CAUSA: aparentemente havia um arquivo -f
no meu diretório, e quando está sendo passado para o grep com o *
, o grep está tratando isso como um flag, causando esse comportamento.
Tentar excluir este arquivo normalmente também não funciona, pois o rm
também o considera como um sinalizador. Graças a uma sugestão do Nick, este arquivo pode ser removido com
rm ./-f
Não é possível replicar:
$ echo '<3' > foo
$ grep "<3" *
foo:<3
Tags grep