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 grep
execução.
Eu tentei isso
cat * | grep -c
mas ele pesquisa todos os arquivos. Eu só quero procurar arquivos que começam com a letra a
grep -c
nã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:
fonte
grep -c string a*
fonte
método alternativo, fornecendo a você o poder e a flexibilidade do comando ' find ':
encontrar . -name "a *" | xargs grep -c string
fonte
find . -type f -iname foo* -print | xargs egrep -i your_regex
grep -c string a *
fonte
Como os outros disseram, sua solução básica é:
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:
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.
fonte