Você está procurando por um nome de arquivo ou uma palavra dentro de um arquivo? grep procura dentro dos arquivos, o que parece ser o que você quer.
O grep usa expressões regulares - na verdade, é isso que a parte "re" representa. Portanto, ele não usa os curingas normais; isto é, abc*
não encontraria palavras iniciando com abc, encontraria palavras iniciando com ab, depois zero ou mais c's seguindo. Mas sim, se você simplesmente der um padrão, ele encontrará em qualquer lugar, sem conhecimento de palavras inteiras. Se você quisesse encontrar palavras inteiras, você precisaria criar uma expressão regular para dizer isso.
Mas, como a maioria dos comandos, você precisa colocar o (s) nome (s) de arquivo (s) no final do comando, para que o seu exemplo fique lá e espere pelo nome do arquivo.
Como @plink disse, use
grep -r -o -i "your_string" *'
(ou *.*
ou outro filespec). Os erros podem ser ignorados. Se você estiver recebendo muitos erros, é possível incluir 2>/dev/null
no final, o que redirecionará stderr para um dispositivo nulo.