Carmen Marcela Alegria C. escribió:
> 
> 
> --- 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/ 
> 
> 
El 3 es buenísimo, en efecto. De las dos maneras es un gran rastreador,
pero con el "pipe" me va más rápido que con el 'exec'. A mí de todas
formas es que me encanta el encadenamiento de procesos. Qué bien,
cuántas aportaciones!

Attachment: smime.p7s
Description: S/MIME Cryptographic Signature

Responder a