Script para buscar texto dentro de ficheros

Enviado por ZiTAL el 27 Marzo, 2009 - 10:51.

Buscando sobre como hacer esto me tope con esto:

http://uannight.wordpress.com/2007/04/16/buscar-texto-dentro-de-ficheros-en-linux/

Y convirtiéndolo en script quedaría algo así:

#!/bin/bash
_FOLDER=$1
_PATTERN=$2

_COMMAND=`find ${_FOLDER} -exec grep -l ${_PATTERN} {} \;`

for _FILE in $_COMMAND
do
        echo ${_FILE}
done

exit 0

le damos permisos de ejecución:

chmod u+x ./find.sh

Un ejemplo:

./find.sh /home/iban/Desktop/ asd

Resultado:

/home/iban/Desktop/tmp/html2.txt
/home/iban/Desktop/tmp/html.txt

Como bien dice: ismaelviamontes, se puede hacer todo con grep:

#!/bin/bash
_PATTERN=$1
_FOLDER=$2

_COMMAND=`grep -r -e ${_PATTERN} ${_FOLDER}`

for _FILE in $_COMMAND
do
        echo ${_FILE}
done

exit 0

;)

Imagen de xanderboy
Enviado por xanderboy el 27 Marzo, 2009 - 16:12.

Pero mira que Interesante ... Gracias Zital se ve buenisimo más rápido !!! Lo probaré wink

Imagen de ismaelviamontes
Enviado por ismaelviamontes el 27 Marzo, 2009 - 19:13.

soy nuevo en linux....
me pueden decir porque no usar #grep para buscar?????
al final hacen lo mismo...
#grep -r o grep -i si son varias palabras ...

Imagen de ZiTAL
Enviado por ZiTAL el 27 Marzo, 2009 - 21:28.

ismaelviamontes tienes razón, ahora edito el post.

Imagen de AngelFire
Enviado por AngelFire el 5 Abril, 2009 - 06:30.

Se me ocurrio que con eso podia resolver mi problema posteado en:

http://www.esdebian.org/foro/30789/problema-samba-ubuntu-804

Pero en el bash me devuelve esto.

angelfire@angelfire-desktop:~$ ./find.sh / filmes
grep: /lib/udev/devices/ppp: Permiso denegado
grep: /lib/udev/devices/loop0: Permiso denegado
grep: /lib/udev/devices/kmem: Permiso denegado
_

Y se queda el cursor flasheando ahi.

De todas maneras no deja de estar interesante el script.

Bye

AngelFire

Imagen de ZiTAL
Enviado por ZiTAL el 5 Abril, 2009 - 09:53.

hombre es que con un usuario normal no puedes acceder a ciertas partes del sistema, pero no se te debería de bloquear, puede ser que tarde mucho y tú pienses que esta bloqueado.

Imagen de sansatan
Enviado por sansatan el 5 Abril, 2009 - 11:57.

Me parece que tu script es exactamente igual que usar:

grep -lre PATRON DIRECTORIO

La opción -l te evita el "for" que haces después del grep.