Quero pesquisar todos os arquivos recursivamente no diretório em que estou para uma determinada string.
eu tentei
grep -r -i my_string
e tentei em uma pasta de teste com dois arquivos minúsculos, mas não encontrou a sequência.
Além disso, existe alguma maneira especial de definir "contém" em vez de corresponder à palavra inteira?
grep -r -o -i "your_string" *
(com "aspas)."Respostas:
Você está procurando um nome de arquivo ou uma palavra dentro de um arquivo? O grep pesquisa dentro dos arquivos, o que parece ser o que você deseja.
O grep usa expressões regulares - na verdade, é isso que a parte "re" representa. Portanto, ele não usa os curingas normais do bash; isto é,
abc*
não encontraria palavras que começassem com abc, encontraria palavras que começassem com ab, depois zero ou mais c's a seguir. Mas sim, se você simplesmente der um padrão, ele o encontrará em qualquer lugar, sem o conhecimento de palavras inteiras. Se você quisesse encontrar palavras inteiras, seria necessário criar uma expressão regular para dizer isso.Mas, como a maioria dos comandos, você precisa colocar o (s) nome (s) do (s) nome (s) no final do comando, para que seu exemplo fique lá e aguarde o nome do arquivo.
Como o @plink disse, use
(ou
*.*
outro tipo de arquivo). Os erros podem ser ignorados. Se você estiver recebendo muitos erros, poderá anexar2>/dev/null
ao final, que redirecionará o stderr para um dispositivo nulo.fonte