Encontre palavras em muitos arquivos

2

Estou procurando por este struct messages_sdd_t e preciso pesquisar vários arquivos * .c para encontrá-lo. No entanto, não consigo encontrar uma correspondência, pois quero excluir todas as palavras 'struct' e 'messages_sdd_t'. Como eu quero pesquisar sobre isso apenas 'struct messages_sdd_t' A razão para isso é, como struct é usado muitas vezes e continuo recebendo páginas ou resultados de pesquisa.

Eu tenho feito isso sem sucesso:

find . -type f -name '*.c' | xargs grep 'struct messages_sdd_t'

e isso

find . -type f -name '*.c' | xargs egrep -w 'struct|messages_sdd_t'

Muito obrigado por qualquer sugestão,

    
por ant2009 23.04.2010 / 07:22

3 respostas

5

Use ack :

ack "struct messages_sdd_t" *.c

Ele é recursivo por padrão e é muito mais rápido do que grep (de acordo com minha observação) ao pesquisar por um diretório contendo toneladas de código-fonte.

Se você não quiser usar ack , grep deve estar bem também:

grep -r "struct messages_sdd_t" *.c

    
por 23.04.2010 / 08:53
1
find . -type f -name '*.c' -exec grep 'struct\s\+messages_sdd_t' {} \;

Ou se você se importa apenas com o nome do arquivo:

find . -type f -name '*.c' -exec grep -q 'struct\s\+messages_sdd_t' {} \; -print
    
por 23.04.2010 / 07:27
1
grep -R --include='*.c' 'struct messages_sdd_t' .

Isso fará uma pesquisa recursiva e usará grep para escolher apenas .c arquivos.

Considere adicionar -H para sempre gravar o nome do arquivo com a correspondência de linha.

    
por 11.05.2012 / 09:00