¿Cómo enumero el recuento de palabras en varios archivos?

9

Digamos que necesito averiguar cuántas palabras hay en cada archivo que tienen la palabra 'trabajo'.

Sé que para encontrar archivos con 'trabajo', sería ls work. Y para averiguar la cantidad de palabras seríawc -w

Sin embargo, intenté esto y parece que solo se muestra la cantidad de archivos, no la cantidad de palabras combinadas en todos los archivos (que necesito):

ls work | wc -w

Entonces, si hay 14 archivos que siguen el requisito previo de 'trabajo', se mostrarían 14, no el número de palabras.

John Stacen
fuente

Respuestas:

17

La sintaxis es la siguiente wc -w [FILE]. Si no usa FILE pero la tubería en la salida ls worksolo contará lo que leerá en stdin.

Necesita canalizar en el texto mismo:

cat *work* | wc -w

Alternativa sea posible ejecutar wccon find -exec. Pero tenga en cuenta que esto podría mostrar múltiples sumas "totales" como findse llamarán wcvarias veces si hay muchos archivos.

find ./ -type f -name "*work*" -exec wc -w {} +
Germar
fuente
Usé el findcomando para poder también sumar el recuento de líneas usando wc -l. ¡Asombroso!
cody.codes
3

Puede ejecutar wccon múltiples archivos y luego usar el shell incorporado *que agrega todos los archivos no ocultos en el directorio de trabajo a wclos parámetros.

wc -w *work*
mmrmartin
fuente
Si el nombre de un directorio contiene work, esto mostrará la salida junto con un error ... un truco será redirigir el STDERR ... 2>/dev/nullaunque debería usar algo como findpara obtener solo los archivos ...
heemayl