Buscando cadenas de texto en ficheros

¿Existe algún método o programa en Linux que me permita localizar todas las páginas web de un directorio y sus subdirectorios internos que contengan la palabra "Madrid", por ejemplo?
1

1 respuesta

Respuesta
1
Efectivamente, existen en línea de comando las funciones find, xargs y grep que al unirse en un sólo comando ofrecen resultados realmente impresionantes. La solución a tu pregunta concreta es el siguiente comando:
find /home/ -name "*.html" -print | xargs grep -l Madrid | more
---
Find: Encontrar un archivo con ciertas características
El comando find se usa para encontrar archivos en el árbol de directorios de Linux. La estructura de directorios puede ser arbitraria. Find requiere un punto de partida y las características del archivo a encontrarse. Después, find revisa ese directorio y todos los directorios subordinados, buscando los archivos que cumplan la condiciones citadas.
Algunas formas comunes son:
find . -name perdido -print
Esto busca en el directorio actual (.) Todos los archivos o directorios de nombre perdido y pone el resultado en pantalla (-print). En algunas versiones modernas de Linux, la opción -print no es necesaria, pero en otras si.
find /home -name '*.f' -Print
Busca, a partir del directorio /home, todos los archivos que terminen en .f. El uso de las comillas es indispensable porque de lo contrario, el shell sustituye por el asterisco los nombres de todos los archivos en el directorio de partida.
---
Grep: Encontrar un patrón en una lista de archivos
El nombre grep es criptico: significa "global regular expression and print", pero su función es sencilla: encontrar un patrón en una lista de archivos (por ejemplo, todos los archivos que contengan la palabra "Madrid").
Para verdaderamente usar grep y muchos otros comandos de Linux hay que aprender el sistema de expresar patrones, llamado expresiones regulares, de lo cual puedes obtener más información en Internet, por ejemplo en: http://www.ciberdroide.com/misc/novato/curso/regexp.html.
Grep tiene muchas opciones para buscar con o sin mayúsculas, buscar archivos que no contienen al patrón (especie de anti-grep), etc.
grep Madrid *.f
Encuentra todas las lineas de todos los archivos que contienen la palabra Madrid en todos los archivos que terminan en .f. Esto se podría usar como base a una tabla de referencias de un programa fortran.
grep bankhacker /etc/passwd
Busca la linea(s) de /etc/passwd que contiene(n) "bankhacker".
Mucho cuidado con patrones que contienen caracteres especiales del shell, ¿como * y?. Estos deben ser escapados añadiendo el carácter "\" previamnente, o bien usar comillas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas