Se você quiser uma contagem de linhas para cada arquivo individual:
find . -type f -exec wc -l {} + | awk '! /^[ 0-9]+[[:space:]]+total$/'
Excluímos o total de linhas porque haverá várias delas com muitos arquivos sendo processados. O find ... -exec ... +
tentará encaixar tantos nomes de arquivos em uma única linha de comando quanto possível, mas isso será muito menor que 119766 arquivos ... provavelmente apenas alguns milhares (no máximo) por invocação de wc
, e cada um um resultará em sua própria linha 'total' independente.
Se você quiser o número total de linhas em todos os arquivos combinados, aqui está uma maneira de fazer isso:
find . -type f -exec wc -l {} + |
awk '/^[ 0-9]+[[:space:]]+total$/ {print $1}' |
xargs | sed -e 's/ /+/g' | bc
Isso imprime apenas as contagens de linha no total de linhas, os pipes em xargs
para obter todas as contagens em uma linha, depois sed para transformar os espaços em +
signs e, em seguida, canaliza o lote para bc
para fazer o cálculo.
Exemplo de saída:
$ cd /usr/share/doc
$ find . -type f -exec wc -l {} + |
awk '/^[ 0-9]+[[:space:]]+total$/ {print $1}' |
xargs | sed -e 's/ /+/g' | bc
53358931