Estou executando um find . -name pattern
para encontrar alguns arquivos e gostaria de obter com elegância o número total de linhas nesses arquivos.
Como posso conseguir isso?
Se sua versão wc
e find
suportar 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 find
desse suporte:
find . -name pattern -exec cat {} + | wc -l
$ find . -name '*.txt' -exec cat '{}' \; | wc -l
Pega cada arquivo e cat
, em seguida, canaliza tudo isso wc
para o modo de contagem de linhas.
Ou, nome de arquivo estranho [não testado] seguro:
$ find . -name '*.txt' -print0 | xargs -0 cat | wc -l
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 !!!
Outra maneira fácil de encontrar não. linhas em um arquivo:
Exemplo:
fonte
Não testado, mas que tal algo como:
fonte
funcionará eficientemente.
fonte