Para buscar archivos por un texto que tengan en su contenido en la Terminal de Linux, existen varias opciones. Todas son fáciles, incluso para usuarios no habituados a usar la terminal.
Entre otras opciones podemos realizarlo con grep y con find.
Buscar con grep en Linux
Síntasis de grep:
grep [cadena de texto] [ruta] [archivos]
Ejemplos:
Para buscar los archivos que contengan la cadena de texto descargar en el directorio HOME del usuario miki dentro de los archivos con extensión txt:
grep "descargar" /home/miki/ *.txt
Para buscar los archivos que contengan la cadena de texto descargar en el directorio HOME y recursivos del usuario miki dentro de los archivos con extensión txt:
grep -r "descargar" /home/miki/ *.txt
Para buscar los archivos que contengan el texto descargar o gratis en el directorio HOME y recursivos del usuario miki dentro de cualquier archivo:
grep -r "descargar|gratis" /home/miki *
Para buscar los archivos que contengan el texto descargar y gratis en el directorio HOME y recursivos del usuario miki dentro de cualquier archivo:
grep -r "descargar.*gratis" /home/miki *
Ya hemos visto como hacer las búsquedas de modo recursivo, pero también podemos usar estas opciones:
–i: no diferenciará entre mayúsculas y minúsculas.
–w: fuerza que sólo encuentre palabras concretas.
–v: selecciona las líneas que no coinciden.
–n: muestra el número de la línea con las palabras de solicitadas.
–h: elimina el prefijo del nombre del archivo Unix en la salida.
–r: busca directorios recursivamente.
–R: como -r pero sigue todos los enlaces simbólicos.
–l: muestra sólo nombres de archivos con las líneas seleccionadas.
–c: muestra sólo una cuenta por archivo de las líneas seleccionadas.
–color: muestra los patrones coincidentes en colores.
Ejemplos:
Buscar archivos con el texto gratis en el directorio HOME del usuario miki recursivamente con cualquier extensión y muestre el nombre del archivo encontrado con la ruta:
grep -lir "gratis" /home/miki
Buscar archivos con el texto gratis en todos los directorios a partir del que estamos:
grep -R gratis
Buscar con find en Linux
Sintaxis de find:
find [ruta] [expresión_de_búsqueda] [acción]
Ejemplos:
Buscar archivos en el directorio HOME del usuario miki los archivos con extensión txt y contengan el texto descargar:
find /home/miki -name "*.txt" -exec grep -il descargar {} \;