Come posso elencare il conteggio delle parole in più file?


9

Supponiamo di dover scoprire quante parole ci sono in ciascun file che contiene la parola "lavoro".

So che per trovare i file con "lavoro", sarebbe ls work. E per capire il numero di parole sarebbewc -w

Comunque ho provato questo e sembra che stia solo visualizzando il numero di file, non il numero di parole combinate in tutti i file (di cui ho bisogno):

ls work | wc -w

Quindi diciamo che se ci sono 14 file che seguono il prereq 'lavoro', verrebbero visualizzati 14, non il numero di parole.

Risposte:


17

La sintassi è wc -w [FILE]. Se non usi FILE ma pipe nell'output di ls workesso conterà solo ciò che leggerà su stdin.

Devi inserire nel testo stesso:

cat *work* | wc -w

In alternativa si potrebbe eseguire wccon find -exec. Tuttavia, tieni presente che questo potrebbe mostrare più somme "totali", che findverranno chiamate wcpiù volte se ci sono molti file.

find ./ -type f -name "*work*" -exec wc -w {} +

Ho usato il findcomando anche per essere in grado di riassumere il conteggio delle righe usando wc -l. Sorprendente!
cody.codes

3

È possibile eseguire wccon più file e quindi utilizzare la shell integrata *che aggiunge tutti i file non nascosti nella directory di lavoro ai wcparametri di.

wc -w *work*

Se il nome di una directory contiene, workquesto mostrerà l'output insieme a un errore ... un hack sarà per reindirizzare lo STDERR 2>/dev/null.. anche se dovresti usare qualcosa di simile findper ottenere solo i file ..
heemayl
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.