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.

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 {} +

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*

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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.