Procura por uma string recursivamente enquanto no diretório atual

10

Eu quero pesquisar todos os arquivos recursivamente a partir do diretório em que estou em uma string específica.

Eu tentei

grep -r -i my_string

e eu tentei em uma pasta de teste com dois arquivos pequenos, mas não encontrei a string.

Além disso, existe alguma maneira especial de definir "contém" em vez de combinar toda a palavra?

    
por David 02.06.2012 / 03:14

1 resposta

18

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.

    
por Marty Fried 02.06.2012 / 05:37