Como contar o número total de linhas de arquivos encontrados?

10

Estou executando um find . -name pattern para encontrar alguns arquivos, e gostaria de obter elegantemente o número total de linhas nesses arquivos.

Como posso conseguir isso?

    
por GJ. 20.03.2011 / 18:46

5 respostas

9

Se a sua versão de wc e find oferecer suporte às opções necessárias:

find . -name pattern -print0 | wc -l --files0-from=-

que lhe dará contagens por arquivo, bem como um total. Se você quiser apenas o total:

find . -name pattern -print0 | wc -l --files0-from=- | tail -n 1

Outra opção para as versões de find que o suportam:

find . -name pattern -exec cat {} + | wc -l 
    
por 20.03.2011 / 20:55
2
$ find . -name '*.txt' -exec cat '{}' \; | wc -l

Carrega cada arquivo e cat s, e canaliza tudo isso por meio do wc definido para o modo de contagem de linhas.

Ou, [não testado] nome do arquivo estranho seguro:

$ find . -name '*.txt' -print0 | xargs -0 cat | wc -l
    
por 20.03.2011 / 18:52
1

Infelizmente, a saída de:

find . -iname "yourpattern" -exec cat '{}' \; |wc -l

insere linhas extras. Para obter uma contagem de linha confiável, você deve fazer:

find . -name "yourpattern" -print0 | xargs -0 wc -l

Dessa forma, você gerencia os espaços corretamente, obtém uma contagem de linhas para cada arquivo e a contagem total de linhas, mais rapidamente e com estilo !!!

    
por 20.03.2011 / 22:17
1

Outra maneira fácil de encontrar não. linhas em um arquivo:

wc -l filename

Exemplo:

wc -l myfile.txt 
    
por 06.10.2012 / 06:41
0

Não testado, mas que tal algo como:

cat 'find . -name "searchterm" -print' | wc -l
    
por 20.03.2011 / 18:53

Tags