Usando o grep para encontrar uma string em arquivos

3

Como posso encontrar uma string em arquivos em um diretório, usando nomes de arquivos que começam com a letra a. Eu também quero obter o número de ocorrências dessa string do grep I executado.

Eu tentei isso

cat * | grep -c string, mas pesquisa todos os arquivos. Eu só quero pesquisar arquivos que começam com letra a

    
por Simon Sheehan 29.04.2010 / 23:37

5 respostas

8

grep -c string a*
    
por 29.04.2010 / 23:38
4

grep -c string a*

    
por 29.04.2010 / 23:38
3

método alternativo que lhe dá o poder e a flexibilidade do comando ' encontrar ':

encontre. -name "a *" | xargs grep -c string

    
por 30.04.2010 / 00:12
1

grep -c string a *

    
por 29.04.2010 / 23:45
0

Como os outros disseram, sua solução básica é:

grep -c string a*

Você disse que queria classificar os arquivos e listar informações extras.

Você não pode obter tudo isso com o grep, mas faço parte dele se não estiver preocupado com a eficiência e os arquivos não tiverem espaços ou outros caracteres estranhos:

ls -tr 'grep -l string a*' | while read file; do
    grep -c string "$file" | tr '\n' '\t'
    ls -l "$file"
done

O primeiro grep nos backticks procura arquivos correspondentes, listando apenas os nomes. O primeiro ls, então, classifica os por modificação em ordem inversa. Em seguida, pesquisamos cada arquivo pela segunda vez para contar as ocorrências e prefixamos a contagem na listagem padrão "ls -l".

Isso será lento; se você realmente precisa de uma versão mais rápida, provavelmente você pode hackear uma em uma linguagem de script.

    
por 30.04.2010 / 00:05

Tags