Como faço para listar a contagem de palavras em vários arquivos?

7

Digamos que eu precise descobrir quantas palavras há em cada arquivo que contenham a palavra "trabalho".

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

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

ls work | wc -w

Portanto, se houver 14 arquivos que sigam o pré-requisito 'work', ele exibirá 14, não o número de palavras.

    
por John Stacen 29.09.2013 / 02:45

2 respostas

15

A sintaxe é wc -w [FILE] . Se você não usar FILE, mas pipe na saída de ls work , ele contará apenas o que será lido no stdin.

Você precisa inserir o texto em si:

cat *work* | wc -w

Alternativa, você pode executar wc com find -exec . Mas esteja ciente de que isso pode mostrar várias somas "totais", pois find chamará wc várias vezes se houver muitos arquivos.

find ./ -type f -name "*work*" -exec wc -w {} +
    
por Germar 29.09.2013 / 03:10
1

Você pode executar wc com vários arquivos e usar o shell * integrado, que adiciona todos os arquivos não ocultos no diretório de trabalho aos parâmetros de wc .

wc -w *work*
    
por mmrmartin 18.04.2015 / 19:24