Re: Supergrep
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
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
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
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
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
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