Usando grep para encontrar uma string nos arquivos


3

Como posso encontrar uma string em arquivos em um diretório, usando nomes de arquivos começando com a letra a. Eu também quero obter o número de ocorrências dessa string da grepexecução.

Eu tentei isso

cat * | grep -cmas ele pesquisa todos os arquivos. Eu só quero procurar arquivos que começam com a letra a


Observe também que grep -cnão fornece o número de ocorrências ... Fornece o número de linhas correspondentes. Então se você tem uma linha que diz "stringstring", que contará como 1, não 2.

Respostas:


8
grep -c string a*

Obrigado. Podemos exibir os arquivos que são exibidos com os resultados datados como quando fazemos ls -ltrh. Podemos adicionar esse tipo de parâmetros também?


3

método alternativo, fornecendo a você o poder e a flexibilidade do comando ' find ':

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


minha versão:find . -type f -iname foo* -print | xargs egrep -i your_regex
woohoo


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 entender tudo isso com grep, mas ls faz parte disso se você 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 por arquivos correspondentes, listando apenas os nomes. O primeiro ls os classifica por tempo de modificação ao contrário. Em seguida, pesquisamos cada arquivo uma segunda vez para contar ocorrências e acrescentamos a contagem à listagem "ls -l" padrão.

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

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.