Como listar a contagem de palavras em vários arquivos?

9

Digamos que eu precise descobrir quantas palavras existem em cada arquivo que contêm a palavra 'trabalho'.

Eu sei que, para encontrar arquivos com 'trabalho', seria ls work. E para descobrir o número de palavras seriawc -w

No entanto, eu tentei isso e parece apenas exibir o número de arquivos, não o número de palavras combinadas em todos os arquivos (o que eu preciso):

ls work | wc -w

Por exemplo, se houver 14 arquivos que seguem o pré-requisito 'trabalho', ele exibirá 14, não o número de palavras.

John Stacen
fonte

Respostas:

17

A sintaxe é wc -w [FILE]. Se você não usar o FILE, mas canalizar a saída ls workdele, contará apenas o que será lido no stdin.

Você precisa inserir o próprio texto:

cat *work* | wc -w

Alternativa que você pode executar wccom find -exec. Mas lembre-se de que isso pode mostrar várias somas "totais", como findserá chamado wcvárias vezes se houver muitos arquivos.

find ./ -type f -name "*work*" -exec wc -w {} +
Germar
fonte
Eu usei o findcomando para também poder resumir a contagem de linhas usando wc -l. Surpreendente!
Cody.codes
3

Você pode executar wccom vários arquivos e, em seguida, usar o shell interno *que adiciona todos os arquivos não ocultos no diretório de trabalho aos wcparâmetros.

wc -w *work*
mmrmartin
fonte
Se o nome de um diretório contêm work, em seguida, isso vai mostrar a saída, juntamente com um corte error..a será para redirecionar o STDERR 2>/dev/null..although você deve usar algo como findobter apenas os arquivos ..
heemayl