¿Cómo contaría cada aparición de un término en todos los archivos en el directorio actual? - y subdirectorios (?)
He leído que para hacer esto usarías grep; ¿Cuál es el comando exacto?
Además, ¿es posible lo anterior con algún otro comando?
command-line
files
directory
grep
Dime por qué
fuente
fuente

PCREsdebería usarse ya que son experimentales-Fprobablemente sería más rápido.-Flugar de-P. Gracias por la gran sugerencia, la actualización usando-F, que de hecho encaja mejor aquí.grep -Rc [term] *lo haré. El-Rindicador significa que desea buscar de forma recursiva el directorio actual y todos sus subdirectorios. El*es un selector de archivos que significa: todos los archivos. La-cbandera hace que lagrepsalida solo sea el número de ocurrencias. Sin embargo, si la palabra aparece varias veces en una sola línea, solo se cuenta una vez.De
man grep:Si no tiene enlaces simbólicos en su directorio, no hay diferencia.
fuente
-cbandera agrep. Entonces grep cuenta y no necesitas elwc--antes**única ampliará a los no comienzan con un punto, por lo que se le pasa a todos aquellos. Tiene más sentido simplemente usar "." ya que de todos modos va a procesar argumentos de forma recursiva, y eso obtendrá archivos de puntos. El mayor problema aquí es que esto podría ser el número de líneas, no el número de apariciones de una palabra. Si el término aparece varias veces en una línea, solo se contará una vez por "grep -c"En un pequeño script de Python:
count_string.py.Ejecútelo desde el directorio con el comando:
Notas
Explicación:
fuente
rootyfpara qué?rootes la ruta al archivo que incluye "arriba" del directorio actual,fes el archivo. Alternativamente,os.path.join()podría usarse, pero es más detallado.n = n + open(f).read().count(s)?Como una variante de la buena respuesta de @ kos, si está interesado en detallar los recuentos, puede usar el
-cinterruptor de grep para contar las ocurrencias:fuente