Re: Supergrep

1998-09-10 Por tema Octavio Rodriguez Perez
Hola!

No he podido leer el correo hasta ahora. Muchas gracias por las
respuestas, la verdad es que me estaba enrollando demasiado, pero ahora
ya funciona.

Saludos y a su disposicion,

Octavio


Supergrep

1998-09-09 Por tema Octavio Rodriguez Perez
Hola,

Estoy escribiendo un pequeño script para hacer un grep en un arbol de
directorios, pero no me funciona. ¿Puede alguien echarme una mano, por
favor?

Gracias y perdon por la pregunta.

Octavio

#! /bin/csh
# Nombre: supergrep
# Busca una cadena en todos los ficheros de un ARBOL de directorios
#
# Para evitar problemas con directorios vacios
set nonomatch

if ($#argv == 0 || $#argv  2) then
echo Sintaxis: supergrep cadena [directorio]
exit(1)
endif
if ($#argv == 1) then
set dir = .
else
set dir = $2
endif

foreach file ($dir/*)

if ( -f $file) then
`/bin/grep $1 $file`
else if ( -d $file) then
`$0 $1 $file` # Llamada recursiva
endif
end


RE: Supergrep

1998-09-09 Por tema jarregui
Yo, en el trabajo, utilizo algo parecido en HP-UX, que me imagino
no te costara trasladar (y mejorar) a Debian. Es tan simple como:

#!/bin/sh
find $1 -type f -print|xargs grep $2

Porque xargs esta en Linux, ¿no? A ver si estoy metiendo la gamba
hasta el fondo...

Javi.

 --
 De:   Octavio Rodriguez Perez[SMTP:[EMAIL PROTECTED]
 Enviado el:   miércoles 9 de septiembre de 1998 19:59
 Para: Lista de Linux Debian
 Asunto:   Supergrep
 
 Hola,
 
 Estoy escribiendo un pequeño script para hacer un grep en un arbol de
 directorios, pero no me funciona. ¿Puede alguien echarme una mano, por
 favor?
 
 Gracias y perdon por la pregunta.
 
   Octavio
 
 #! /bin/csh
 # Nombre: supergrep
 # Busca una cadena en todos los ficheros de un ARBOL de directorios
 #
 # Para evitar problemas con directorios vacios
 set nonomatch
 
 if ($#argv == 0 || $#argv  2) then
   echo Sintaxis: supergrep cadena [directorio]
   exit(1)
 endif
 if ($#argv == 1) then
   set dir = .
 else
   set dir = $2
 endif
   
 foreach file ($dir/*)
 
   if ( -f $file) then
   `/bin/grep $1 $file`
   else if ( -d $file) then
   `$0 $1 $file` # Llamada recursiva
   endif
 end
 
 
 -- 
 Para BORRARSE, enviar un mensaje a
 [EMAIL PROTECTED]
 que diga unsubscribe en el Subject. En caso de problema, escribir a
 [EMAIL PROTECTED]
 


Re: Supergrep

1998-09-09 Por tema Jaime E. Villate
Octavio Rodriguez Perez escribió:
 Estoy escribiendo un pequeño script para hacer un grep en un arbol de
 directorios, pero no me funciona. ¿Puede alguien echarme una mano, por
 favor?
Pues para que te funcione tienes que quitar las ` ` en el comando
/bin/grep y en la llamada recursiva al programa.
`/bin/grep $1 $file` te ejecuta el grep como querias, pero intenta ejecutar
también el output de grep, que no es un programa ejecutable.

Todavia tienes que refinar el programa un poco (no lo hago pues no estoy
acostumbrado al csh sino al bash)

1 - antes de /bin/grep $1 $file usa el comando /bin/grep -l $1 $file, y
si dá un resultado diferente de nulo, haces un echo $file, para saber cual
fué el fichero donde encontró la cadena.

2 - seria conveniente no dejar que busque en ficheros que no sean de texto.

Espero que esto te ayude

Jaime Villate
Universidad de Oporto


Re: Supergrep

1998-09-09 Por tema Marcelo E. Magallon
On Wed, Sep 09, 1998 at 03:29:50PM +, Octavio Rodriguez Perez wrote:
 Hola,
 
 Estoy escribiendo un pequeño script para hacer un grep en un arbol de
 directorios, pero no me funciona. ¿Puede alguien echarme una mano, por
 favor?

Para no reinventar la rueda... no hace rgrep esto?

Marcelo

PS: find directorio ! -type d | xargs grep algo


Re: Supergrep

1998-09-09 Por tema Marcelo E. Magallon
On Wed, Sep 09, 1998 at 04:56:49PM +0200, [EMAIL PROTECTED] wrote:
 Yo, en el trabajo, utilizo algo parecido en HP-UX, que me imagino
 no te costara trasladar (y mejorar) a Debian. Es tan simple como:
 
 #!/bin/sh
 find $1 -type f -print|xargs grep $2
 
 Porque xargs esta en Linux, ¿no? A ver si estoy metiendo la gamba
 hasta el fondo...

Si, si esta. El find de GNU no requiere -print, pero es una buena costumbre
ponerlo; -type f no va a ver enlaces simbolicos asi que se pueden perder
algunas cosas en el camino.


Marcelo