Blog Informáticos Murcia

Desde Murcia hacia el resto del mundo.

Blog Informáticos Murcia

Desde Murcia hacia el resto del mundo.

Para los amantes de linux, aquí les dejo un comando bastante bueno para la búsqueda de palabras o frases dentro de ficheros de texto a través de dos comandos find y grep.

He querido poner dos ejemplos para que observéis que aunque con el comando find puedes realizar una búsqueda dentro de ficheros, existen otra opciones más simples y que realizan la misma funcionalidad, como es el caso del comando grep.
Si necesitamos buscar una palabra o frase exacta dentro de algún fichero que esta alojado en nuestro ordenador y no sabemos donde esta exactamente, lee atentamente que este es tu post.
Con este comando podemos buscar texto en ficheros recursivamente a partir de una carpeta o directorio:

find ruta -type f | xargs grep cadena_que_buscamos

Donde:

ruta: es el directorio a partir del cual queremos buscar.
cadena_que_buscamos: su nombre lo dice, es el texto que buscamos.

Ejemplo: buscar el texto “palabraBuscar” en el directorio actual:

find . -type f | xargs grep "palabraBuscar"

Este comando buscara a partir del directorio actual todos los ficheros tanto en el directorio actual como en subdirectorios que esten dentro del directorio actual (recursivo).

Otra forma de hacerlo sin el comando find, es con el comando grep:

grep “cadena a buscar” * -R

Si quitamos la opción -R solo buscaría en todos los ficheros que están en la ruta (carpeta) actual, si la carpeta tiene sub-directorios no buscará dentro de estos.
Con la opción -l te listará el nombre de los ficheros que coinciden con la palabra que estas buscando.

Mas ejemplos:

Tenemos 2 ficheros:

fichero1.txt
fichero2.txt
Vamos a suponer que no sabemos apriori el contenido de los ficheros txt, solo se que un uno de los 2 ficheros esta contenida la palabra «blog» y quiero saber en que fichero está.
Los ficheros lo tengo almacenados en mi Escritorio de Ubuntu.
por tanto abro mi terminal y accedo a la ruta:

cd /home/centenero/Escritorio/

donde «centenero» es mi nombre de usuario de la maquina en la que estoy (cada uno tendrá su nombre de usuario).
Situado en ese escritorio escribimos:

grep "blog" *

y este es el resultado:

Como podéis ver os muestra el nombre del archivo y el contenido de este, resaltando en rojo la palabra que estamos buscando.
Si usamos la opcion -l nos listaria solo el nombre del archivo el cual contiene la palabra que nosotros queremos buscar.

con el comando find:

Los comandos que he descrito anteriormente, pueden hacerse muy complejos, la habilidad de un informático es la capacidad que tiene este para combinar dichos comandos para realizar la tarea que deseas.

Para el que quiera investigar un poco mas sobre los comandos find y grep, os dejo unos enlaces.

Manpage  grep

Manpage find

2 comentarios en «Buscar palabra o cadenas dentro de ficheros de texto recursivamente en linux»

  1. Hola, me gustaría saber si eso lo hago desde la consola de windows o como? como acceso al directorio desde el que deseo buscar?

    Gracias. Pedro.

    1. Se hace desde la consola en linux (ubuntu, debian o lo que sea), pero también existe una consola para Windows que interpreta los comandos de linux, el programa para windows se llama cywin y lo puedes descargar en esta url: http://cygwin.com/

      Tendría que ser más especifico en mis post, lo voy a editarlo que no se si para dejarlo mas claro es hacer algún videotutorial, pero de momento hacer vídeos no es mi fuerte, lo mas seguro es que haga pantallazos que es más simple para mi.
      Cualquier cosa no dudes en escribir.
      Un salduo.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.