Se o seu wc
tiver a opção --files0-from
, você poderá fazer isso:
find . -type f -print0 | wc -w --files0-from=-
Explicação:
Encontrei esta solução lendo primeiro a página man wc (1) para ver quais opções estavam disponíveis para varrer vários arquivos. Eu encontrei isto:
--files0-from=F
read input from the files specified by NUL-terminated names in file F;
If F is - then read names from standard input
De usar find
antes, sabia que poderia gerar a lista desejada de arquivos e, com a opção -print0
, exibir os arquivos como uma lista de nomes terminados com NULL.
Juntar isso resultou no comando acima. O comando find
pesquisa o diretório atual ( .
) e todos os subdiretórios dos arquivos regulares ( -type f
) e imprime seus nomes de caminho completos na saída padrão, cada nome seguido por um caractere nulo em vez da nova linha usual ( -print0
). Esse resultado é canalizado ( |
) para a entrada padrão de wc
, que leu essa lista do arquivo especificado ( --files0-from=
), em que -
significa a entrada padrão e imprime o número de palavras ( -w
) encontrados em cada arquivo seguido pelo total de todas as palavras encontradas.
Se tudo o que você tem interesse é o total geral, você pode acrescentar isto ao comando acima.
| tail -1