Localizar arquivo por uma parte de seu conteúdo

4

Tenho muitos arquivos em um repositório específico e preciso encontrar um arquivo que tenha uma cadeia específica em seu conteúdo (na verdade, referenciando o arquivo Version.cc.in ). Qual é a melhor solução para encontrá-lo?

    
por Christian Ivicevic 04.07.2011 / 20:55

4 respostas

5

Você pode usar o grep:

grep "text" /path/to/directory/*

Para uma procura não-seletiva, você pode usar a opção -r para o grep:

grep -r "text" /path/to/directory/*

ou ** no caminho:

grep "text" /path/to/directory/**/*

mas, a disponibilidade do operador ** é dependente do shell - até onde eu sei que é em zsh e bash (apenas 4), pode não estar disponível em outros shells.

    
por 04.07.2011 / 21:17
4

Você pode usar uma ferramenta chamada ack . É descrito como:

ack is a tool like grep, designed for programmers with large trees of heterogeneous source code.

Basicamente, é semelhante ao grep, pois procura padrões, mas com algumas diferenças importantes. Ou seja, ele procura recursivamente e ignora arquivos de backup e controle de versão por padrão (por exemplo, CVS, .svn, foo ~, # foo #). E desde que é construído com Perl é multi-plataforma. Ele também permite que você especifique determinados tipos de arquivos dentro de um diretório para pesquisar, então se você quiser apenas pesquisar arquivos Perl você pode digitar

ack --perl pattern

Se houver interesse, há uma lista das "10 principais razões para usar a ack em vez do grep" na página de acesso do . Além disso, existe um plug-in do Vim .

    
por 04.07.2011 / 22:12
1

Existe outra ferramenta semelhante a Ack , denominada O Silver Searcher . O desenvolvedor afirma que "é como ack, mas melhor. É rápido. É muito rápido. A única coisa mais rápida é coisas que constroem indícios de antemão, como o Exuberant Ctags."

    
por 01.12.2012 / 22:52
0

Se você quiser apenas encontrar e listar o arquivo, não o conteúdo real, use a opção -l com grep:

grep -lr Version.cc.in $(pwd)/*

Que lhe dará uma lista de todos os arquivos e o caminho absoluto para eles (assumindo que os arquivos estão nos diretórios / subdiretórios do diretório de trabalho atual).

    
por 06.07.2011 / 01:42