6

Buscar cadena de texto en todos los archivos de linux

Muchas veces queremos buscar una cadena dentro de todos los ficheros del sistema en linux, pues bien, aquí teneis la instrucción necesaria para hacerlo desde consola:

find “ruta” -type f | xargs grep “cadena a buscar”

Con find (y la opción usada) se buscan archivos en el directorio especificado (usar . para el directorio actual), el comando xargs combina cada elemento con el comando especificado y grep busca patrones en el archivo.

Fuente: LinuxData

Gracias a los lectores del Blog podemos añadir las siguientes formas de buscar la cadena:

find “ruta” -type f -exec grep “cadena a buscar” {} ;

find [path] -exec grep -H [cadena] {} ; 2> /dev/null

Este último redirecciona la salida de errores a null por si no tenemos permisos o da algún error.

  1. Buscar cadena de texto en todos los archivos de linux | Pingüinos Y Cia…

    Indica el comando necesario para buscar en una lista de ficheros una cadena específica…

  2. petrohs dice:

    Creo que se obtiene un resultado similar con

    $ find "ruta" -type f -exec grep "cadena a buscar" {} ;

  3. Álex dice:

    Yo uso lo que dice @petrohs pero además al grep le añado el atributo -H para que me muestre la ruta entera al fichero y no uso -type f ya que aunque hagas un grep sobre un directorio no vas a tener problemas.

    Además cuando me da muchos mensajes de error (por no tener permisos) lo que hago es redireccionar stderr a null, en definitiva:

    find [path] -exec grep -H [cadena] {} ; 2> /dev/null

  4. Psylard dice:

    Gracias por el apunte chicos! está añadido al post ;)

  5. Nosferatus dice:

    Hola, yo tengo un problema, cada vez que inicio sesión me aparece:
    No se pudo encontrar «/media/Backup/franckubuntu/Descargas».
    Después de probar y reprobar soluciones, creo que la opción sería buscar dónde es llamado ese disco, para ello en la terminal puse:

    find “.” -type f | xargs grep “/media/Backup/franckubuntu/Descargas”

    pero me da este error:
    grep: ./proc/sysrq-trigger: Error de entrada/salida

    y aparentemente no encuentra nada.

    ¿Alguna idea?

    Gracias

  6. Lucho Leal dice:

    @Nosferatu, puedes acceder a esa carpeta?, en terminal o en GUI, de no ser así tienes un severo problema con tu sistema de archivos, y por ende grep solamente busca en unidades montadas, de otro modo el punto “.”, no es muy buena idea para buscar una cadena en cualquier sistema operativo, peor aún en uno basado en unix, 1) por ser el separador natural de extensiones, olvídate de chorradas de los metadata y 2) por ser en sí mismo un trigger para ejecutar cualquier aplicación.

    Mi consejo es que busques la manera de direccionar tu aplicación a directorios que no tengas que montar una vez iniciado el SO (o aprende a obligar al SO a hacerlo por tí, una pista /etc/fstab), o bien, que ejecutes la consulta de otro modo.

    Saludos.