GNU/Linux >> Tutoriales Linux >  >> Linux

Contar todas las ocurrencias de una cadena dentro de todos los archivos en una carpeta

Estás cerca. Para obtener un recuento total de todas las ocurrencias de "ha" dentro de todos los archivos .txt en una carpeta:

grep -o "ha" *.txt | wc -l

Desde man grep :

-o, --only-matching
       Print only the matched (non-empty) parts of a matching line, with
       each such part on a separate output line.

Esto funciona porque cada coincidencia se imprime en una línea separada, lo que permite wc -l para contarlos todos.

Sin embargo, de forma predeterminada, grep solo encuentra la primera aparición en una línea y genera la línea completa. Asimismo, la opción -c solo encuentra la primera ocurrencia en todas las líneas, luego muestra cuántas líneas tenían 1 (o más) coincidencias.

EDITAR:

Aquí hay una forma de imprimir el número total de ocurrencias dentro de cada archivo individual (con nombres de archivo):

find *.txt -printf 'echo "$(grep -o "ha" %p | wc -l) %p";' | sh

#Example output
3 file1.txt
1 file2.txt

Explicación:

find *.txt - encuentra archivos .txt

-printf - imprime todo entre las comillas simples (formateadas) en la salida estándar, reemplazando las apariciones de %p con la salida de find (nombres de archivo)

$(grep -o "ha" %p | wc -l) - funciona como arriba

| sh - la salida de -printf (que son comandos) se canalizan a un shell y se ejecutan

Tenga en cuenta que printf se invoca una vez por nombre de archivo.


En lugar de usar grep , intenta usar ag -c ha Buscador de plata:

1.txt:3
2.txt:1

¡Es más rápido! Si está utilizando ubuntu, puede instalar el paquete silversearcher-ag .


Linux
  1. ¿Imprimir todos los archivos en una carpeta?

  2. ¿Cómo grep una cadena en un directorio y todos sus subdirectorios?

  3. ¿Cómo encuentro todos los archivos que contienen texto específico en Linux?

  4. Encuentra todos los archivos de más de un minuto

  5. Buscando una cantidad de archivos para una cadena en LInux

Cómo encontrar una cadena o palabra específica en archivos y directorios

¿Eliminar todos los archivos/directorios excepto un archivo?

¿Grep Word dentro de un archivo y luego copia el archivo?

Eliminar todos los archivos de una carpeta excepto el último (más reciente) 20?

¿Cómo eliminar todos los archivos con una extensión particular en una carpeta particular?

Cómo realizar una búsqueda Grep en todos los archivos y en todos los directorios