Home » Tecnología » Linux » Encontrar texto en ficheros linux: find, xargs, grep

Encontrar texto en ficheros linux: find, xargs, grep

Lo cierto es que muchas veces resulta necesario realizar búsquedas de ciertas cadenas en diferentes ficheros, y tener un listado de los ficheros que contienen dicha cadena.

Por ejemplo: sabemos que tenemos que tocar una clave de configuración (sabemos qué variable o qué valor), dentro de algún fichero en /etc, pero de los cientos de ficheros, no recordamos exactamente en cuál se encuentra. Basta que busquemos esa cadena y nos diga qué ficheros la contienen para que acotemos nuestra búsqueda.

Para realizarlo utilizaremos los comandos find, xargs y grep.

find busca ficheros en el disco, xargs es capaz de pasar una lista como argumentos en llamadas repetidas a otro programa y grep realiza búsquedas de cadenas dentro de ficheros.

El comando en cuestión es:

find . |xargs grep ‘cadena’

y su explicación:

find . realiza un listado de ficheros desde la ruta actual

| es el pipe es decir, la salida del comando anterior la pasa al siguiente

xargs toma la lista resutlado de find y la va pasando como llamadas consecutivas a grep

grep busca ‘cadena’ dentro de los ficherso que le pasa xargs, buscados a su vez por find.

La verdad es que esta es la forma más simple que podemos ir depurando. Por ejemplo, si queremos restringir la búsqueda a ficheros con una extensión concreta, basta con que utilicemos parámetros para el find: find . -name ‘*.txt’ , si por ejemplo queremos obtener únicamente el listado de los ficheros para almacenarlos en algún lugar, o para pasar a su vez ese listado a otro comando (por ejemplo realizar una copia de dichos ficheros a otro lugar) bastaría con lo siguiente: find . -type f -name ‘*.conf’ |xargs grep -Hn ‘eth0′ | cut -d: -f1

find xargs grep, busqueda de cadenas en linux

y así sucesivamente…

Usted debe serconectado

*
© 2003-2011 Suescun.Net