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


10

Estou executando um find . -name patternpara encontrar alguns arquivos e gostaria de obter com elegância o número total de linhas nesses arquivos.

Como posso conseguir isso?

Respostas:


9

Se sua versão wce findsuportar as opções necessárias:

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

que fornecerá contagens por arquivo e um total. Se você deseja apenas o total:

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

Outra opção para versões finddesse suporte:

find . -name pattern -exec cat {} + | wc -l 

2
$ find . -name '*.txt' -exec cat '{}' \; | wc -l

Pega cada arquivo e cat, em seguida, canaliza tudo isso wcpara o modo de contagem de linhas.

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

$ find . -name '*.txt' -print0 | xargs -0 cat | wc -l

1

Infelizmente, a saída de:

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

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

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

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


1
por exemplo: localização de tempo. -name " .m" -exec cat '{}' \; | wc -l é executado em 4.878s e retorna 227847 como contagem de linhas. Mas o tempo encontra. -name " .m" -print0 | xargs -0 wc -l é executado em 0,769s e retorna a contagem de linhas adequada 126464.
G24l

1

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

wc -l filename

Exemplo:

wc -l myfile.txt 

-1

Não testado, mas que tal algo como:

cat `find . -name "searchterm" -print` | wc -l

Isso não funcionará bem com caminhos que contenham espaços ou caracteres que acionam globbing.
Kamil Maciorowski

-2
wc -l `find -name filename`

funcionará eficientemente.


… Ou não, se os caminhos contiverem espaços ou caracteres que acionam globbing.
Kamil Maciorowski

E mesmo que funcione, isso informa o número de linhas em cada arquivo, o que não é uma maneira elegante de obter o total (conforme solicitado).
Scott
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.