Ciertamente en...
for a in `find . -type f -name "*.htm*"`; do if [ `cat $a | grep "body"
| wc -l` -gt 1 ]; then echo $a; fi; done
Deberia ser -gt 0, es decir, que tenga al menos 1 linea "body" o mas...
El hecho no usar find... es para resaltar el hecho de que no
es necesario hacer lineas cripticas con | que utiliza la eficiencia
y el poder funcional de los descriptores de archivos.
Si no tambien aquellos que estan acostumbrados a la programacion
imperativa y desconocen todos los comandos pueden valerse de tecnicas
mas tradicionales como los bucles aunque no sean las mas eficientes.
Un ejemplo mas sencillo es ver la diferencia entre:
ps -edf | grep juan | awk '{print $2}' | xargs kill -9
y el comando usual sin necesidad de |:
pkill -u juan
Programar es usar tu imaginacion al escribir,
no memorizar todos los comandos, pues,
a veces el comando que buscas no existe
y debes hacerlo tu mismo, lo cual, tampoco
significa que debas inventar la rueda.
Saludos.
Carmen Marcela Alegria C. wrote:
--- El vie 27-feb-09, Rodrigo Gallardo <rodr...@nul-unu.com> escribió:
De:: Rodrigo Gallardo <rodr...@nul-unu.com>
Asunto: Re: [OT] Línea de comandos
A: debian-user-spanish@lists.debian.org
Fecha: viernes, 27 febrero, 2009, 9:41 am
On Fri, Feb 27, 2009 at 10:55:59AM -0300, Pablo Jiménez
wrote:
On Fri, Feb 27, 2009 at 03:52:15AM -0200, Mauro Lizaur
wrote:
On Fri, 27 Feb 2009, Olaf Reitmaier Veracierta
wrote:
De acuerdo,
5 ineditos pero utiles...
5.- Buscar que archivos "*.htm"
contienen las frase o palabra palabra
"body" en el directorio actual
-type f -name *.htm`; do
if [ `cat $a | grep "body" | wc
-l` -gt 1 ]; then echo $a; fi; done
pero no es mas facil asi?:
grep body *.htm* -R|cut -d':' -f1|uniq
Te ahorras el uso de cut con el mismo grep:
$ grep -ilR "body" *.htm*
Y con find es aún más poderoso:
$ find . -type f -iname "*.htm*" -exec grep
-il "body" {} \;
Pero así ejecutas un grep por archivo, lo cual es lento.
Mejor:
$ find . -type f -iname '*.htm*' -print0 | xargs
-0 grep -il body
El -print0 por si alguno de los nombres contiene espacios,
bastante
común en directorios en los que probablemente ha actuado
un diseñador
con sus herramientas de windows.
Esta bien interesante el tema, a mi me gusta mucho el poder de la linea de
comando ;)
Esta es mi aportacion:
1) for a in `find . -type f -name "*.htm*"`; do if [ `cat $a | grep "body" | wc
-l` -gt 1 ]; then echo $a; fi; done
funciona, pero creo que esta mal hecho en algunos puntos; por ejemplo, el cat es innecesario, ya que el grep usa como argumentos el patron y file's.
grep -i "body" $a es mejor que hacer cat $a | grep "body" eso debido a que no usas un | y asi te ahorras un proceso
despues en el if creo que es bueno hacer la comparacion, pero no entiendo
porque tiene que ser el operador 'gt 1' porque eso ya estaria dando algo que me
parece erroneo. Es decir tengo un archivo con 2 lineas body, no lo imprime,
porque?
lo...@debian:~/Desktop$ for a in `find . -type f -name "*.htm*"`; do if [ `cat $a | grep
"body" | wc -l` -gt 1 ]; then echo $a; fi; done
./SAN/Curso-SAN/dsm_sim/deploy/index.html
./SAN/Curso-SAN/dsm_sim/deploy/start.html
./SAN/Curso-SAN/dsm_sim/starter_page.html
./Desktop.html
lo...@debian:~/Desktop$ find . -type f -iname '*.htm*' -print0 | xargs -0 grep
-il body
./maraha_nessus/index.html
./maraha_nessus/172_16_29_227/index.html
./SAN/Curso-SAN/dsm_sim/deploy/index.html
./SAN/Curso-SAN/dsm_sim/deploy/start.html
./SAN/Curso-SAN/dsm_sim/deploy/content/assessment/index.html
./SAN/Curso-SAN/dsm_sim/starter_page.html
./Desktop.html
./EULA/EULA-ja_JP.html
./EULA/EULA-en_US.html
lo...@debian:~/Desktop$ grep -i "body" ./EULA/EULA-ja_JP.html
<BODY LANG="ja-JP" DIR="LTR">
</BODY>
2) grep -ilR "body" *.htm*
De este creo que el real problema es que si es recursivo pero no tanto como
el find
3) find . -type f -iname '*.htm*' -print0 | xargs -0 grep -il body es bueno,
pero es realmente necesario que se haga otro proceso por el | para hacerle el
grep? no seria mejor hacer:
find . -type f -iname '*.htm*' -print0 -exec grep -il body {} \;
Saludos,
Marcela Alegria
__________________________________________________
Correo Yahoo!
Espacio para todos tus mensajes, antivirus y antispam ¡gratis!
Regístrate ya - http://correo.yahoo.com.mx/
--
----------------------------------------------------------------------
"You don't know where your shadow will fall",
Somebody.-
----------------------------------------------------------------------
Ing. Olaf Reitmaier Veracierta <ola...@gmail.com>
----------------------------------------------------------------------
http://olafrv.googlepages.com (Personal Webpage)
http://olafrv.blogspot.com (Technical Blog)
----------------------------------------------------------------------
--
To UNSUBSCRIBE, email to debian-user-spanish-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org