domingo, 4 de mayo de 2008

fgrep.sh - Obtener el nombre de un archivo en base a su contenido.

Hola a todos, el dia de hoy publico aqui una función muy util que escribi hace ya algun tiempo. Un pequelo script de shell que sirve para buscar dentro de los archivos un patron especifico.


#!/bin/bash

# Autor : Julio Cesar Sánchez González (c)2008 GPL
# Fecha : 08-Feb-2007.
# Ultimo Update: 08-Feb-2007.
# Descripcion : Busca en el directorio actual un patron
# regular dentro de cada archivo y regresa
# el nombre del archivo en el que se
# encontro dicho patron.
# Uso : fgrep.sh
#

for i in `find -type f`; do
ret=`grep "$1" $i`;

if [ "$ret" != "" ]; then
echo $i;
fi
done


Por ejemplo, supongamos que queremos modificar el DocumentoRoot de nuestro apache2 y como ya es casi una costumbre, cada distribucion de linux parte el archivo de configuracion httpd.conf en multiples archivos mas pequeños pero aveces mas dificiles de identificar.

Por ejemplo en mi ubuntu 8.04 un listado del directorio de configuracion de apache seria algo como esto:


root@andromeda:/etc/apache2# ls -alF
total 30
drwxr-xr-x 7 root root 320 2008-05-04 16:04 ./
drwxr-xr-x 148 root root 7456 2008-05-04 16:26 ../
-rw-r--r-- 1 root root 10587 2008-02-01 21:57 apache2.conf
drwxr-xr-x 2 root root 72 2008-05-04 16:04 conf.d/
-rw-r--r-- 1 root root 378 2008-02-01 21:57 envvars
-rw-r--r-- 1 root root 0 2008-05-04 16:04 httpd.conf
drwxr-xr-x 2 root root 2792 2008-05-04 16:16 mods-available/
drwxr-xr-x 2 root root 800 2008-05-04 16:04 mods-enabled/
-rw-r--r-- 1 root root 59 2008-02-01 21:57 ports.conf
drwxr-xr-x 2 root root 96 2008-05-04 16:08 sites-available/
drwxr-xr-x 2 root root 80 2008-05-04 16:04 sites-enabled/
root@andromeda:/etc/apache2#


Algunos archivos y directorios que tendria que revisar uno por uno mediante cat o emacs para saber cual es el archivo que tengo que modificar y el cual almacena la directiva "DocumentRoot" que a simple vista es un poco dificil de ver.

Bueno, pues para eso hice este script que almacene en un archivo de nombre: fgrep.sh y almacene en /sbin.

Su uso es bastante sencillo y si alguin lo mejora seria bueno que me lo enviaran para publicarlo ya que este pequeño script fue escrito al vuelo y no he tenido tiempo de mejorarlo.

Ej:


root@andromeda:/etc/apache2# fgrep.sh DocumentRoot
./sites-available/default --> Dentro del archivo "default" se
encuentra "DocumentRoot" :)


Sin mas por el momento, me despido de ustedes y espero que les sea util como a mi.


--
Saludos

No hay comentarios.:

Bahia desde el balcon...

Bahia desde el balcon...
Ixtapa Zihuatanejo