Loading...

Dos formas de buscar strings recursivamente en Linux

2024-01-14
  • awk
  • grep
  • comandos
  • linux

Buscar strings de forma recursiva en Linux puede ser a veces un poco coñazo, pero gracias a las herramientas adecuadas puede ser algo más fácil. En este artículo, exploraremos dos herramientas de búsqueda de strings de Linux: awk y grep.

Buscar con awk

awk es una herramienta de procesamiento de texto que se utiliza para buscar y manipular datos en archivos de texto. Para buscar un string específico en todos los archivos de una carpeta y sus subcarpetas, se puede utilizar el siguiente comando:

$ awk '/string/ {print FILENAME}' -r *

Explicación del comando:

  • /string/ busca la palabra o string deseado.
  • {print FILENAME} imprime el nombre del archivo donde se encontró el string.
  • r indica que la búsqueda debe ser recursiva en todos los subdirectorios.
  • * es el criterio para buscar en todos los archivos.

Por ejemplo, si queremos buscar la palabra "BreadCrumb" en todos los archivos de la carpeta "workspace" y sus subcarpetas, podemos usar el siguiente comando:

$ awk '/BreadCrumb/ {print FILENAME}' -r /home/user/workspace/*

La salida será similar a la siguiente:

/home/user/workspace/templates/faqs.js
/home/user/workspace/templates/prt.js
/home/user/workspace/components/BreadCrumb/BreadCrumb.js

Si queremos contar el número de veces que se encontró el string, podemos usar el siguiente comando:

$ awk '/BreadCrumb/ {count++} END {print count}' -r /home/user/workspace/*

La salida será el número de veces que se encontró la palabra "BreadCrumb" en los archivos:

4

Buscar con grep

Otra forma de hacer búsquedas recursivas es utiliza la herramienta grep. Es muy eficaz para buscar strings específicos en archivos de texto. Para buscar un string específico en todos los archivos de una carpeta y sus subcarpetas, se puede utilizar el siguiente comando:

$ grep -Rn "string" /ruta/a/la/carpeta/

Explicación del comando:

  • R busca de forma recursiva en la carpeta y sus subcarpetas.
  • n muestra el número de línea donde se encontró el string.
  • "string" es el string que se quiere buscar.
  • /ruta/a/la/carpeta/ es la ruta de la carpeta donde se quiere buscar.

Por ejemplo, si queremos buscar la palabra "BreadCrumb" en todos los archivos de la carpeta "workspace" y sus subcarpetas, podemos usar el siguiente comando:

$ grep -Rn "BreadCrumb" /home/user/workspace/

La salida será similar a la siguiente:

/home/user/workspace/templates/faqs.js:6:import BreadCrumb from '../components/BreadCrumb/BreadCrumb';
/home/user/workspace/templates/faqs.js:49:              <BreadCrumb
/home/user/workspace/templates/prt.js:6:import BreadCrumb from '../components/BreadCrumb/BreadCrumb';
/home/user/workspace/templates/prt.js:48:              <BreadCrumb
/home/user/workspace/components/BreadCrumb/BreadCrumb.scss:1:.breadcrumb {
/home/user/workspace/components/BreadCrumb/BreadCrumb.js:6:const BreadCrumb = ({category, post}) => {

Si queremos contar el número de veces que se encontró el string, podemos usar el siguiente comando:

$ grep -Rc "BreadCrumb" /home/user/workspace/

La salida será el número de veces que se encontró la palabra "BreadCrumb" en los archivos:

4

Conclusión

En este artículo, hemos explorado cómo buscar strings recursivamente en Linux utilizando las herramientas awk y grep. Ambas herramientas son muy útiles para buscar strings específicos en archivos de texto. awk es una herramienta de procesamiento de texto más avanzada que se puede utilizar para manipular datos, mientras que grep es una herramienta de búsqueda de strings más sencilla pero muy eficaz.

Si bien hay muchas otras herramientas de búsqueda de strings en Linux, awk y grep son dos de las más comunes y útiles. Espero que esta guía te haya sido útil en tus búsquedas de strings en Linux.