Horst H. von Brand escribió:
> Julio Pacheco <[EMAIL PROTECTED]> wrote:

> > ninguna de las cuales funciona.
> > Una prueba rápida con perl -ne 'print if m#texto_a_buscar\x00\x00#' *
> > encuentra el texto, pero necesito que muestre el nombre de archivo.
> 
> Haz eso iterando sobre los archivos...

Mala idea, porque eso abriria un proceso perl por cada archivo, lo cual
es muy costoso.  Es mucho mejor hacer que el proceso Perl lea todos los
archivos de una sola pasada (o por lo menos que lea muchos archivos),
por ejemplo haciendo algo como

find /dir/donde/estan -type f | xargs perl -ne 'print $ARGV if m#texto\x00\x00#'

Claro que tambien puede hacerse dentro de perl, creo que seria algo asi

#!/usr/bin/perl
use warnings;
use File::Find;

find(\&buscar, q{/dir/donde/estan});

sub buscar {
        my $f = $File::Find::name;
        open F, $f or die "quak!: $!";
        while (<F>) {
                if (m#texto\x00\x00#) {
                        print $f, "\n";
                        close F;
                        return;
                }
        }
        close F;
}

(sin probar por supuesto)

Es posible que sea mas eficiente hacer una busqueda preliminar de
"texto" usando el grep del sistema, y luego pasarle los nombres de los
archivos que coincidan a Perl.  Buscar en Perl es mediblemente mas
lento, hasta donde recuerdo.  Si son 20 GB estas optimizaciones son
utiles :-)

-- 
Alvaro Herrera                                http://www.PlanetPostgreSQL.org
Maybe there's lots of data loss but the records of data loss are also lost.
(Lincoln Yeoh)
From [EMAIL PROTECTED]  Sat Oct 21 14:29:46 2006
From: [EMAIL PROTECTED] (Franco Catrin)
Date: Sat Oct 21 14:29:00 2006
Subject: Programar en Linux
In-Reply-To: <[EMAIL PROTECTED]>
References: <[EMAIL PROTECTED]> <[EMAIL PROTECTED]>
        <[EMAIL PROTECTED]>
        <[EMAIL PROTECTED]>
Message-ID: <[EMAIL PROTECTED]>

El vie, 20-10-2006 a las 21:56 -0300, Matias Valdenegro T. escribió:
> El Viernes, 20 de Octubre de 2006 12:16, Franco Catrin escribió:
> > no tiene relacion.  Puedo hacer algo a la rápida en Java y no tendré los
> > problemas que tengo en PHP para mantenerlo.
> 
> Seguramente no, con Java habra que cambiar la maquina para soportar la carga 
> innecesaria y el overhead del lenguaje :)

Pues depende, si me quedo corto de maquina y mi aplicacion es Java (J2EE
en realidad) puedo poner varias maquinas y distribuir la aplicacion
facilmente.  Incluso pueden ser maquinas charchitas (PIII) con 256MB en
ram

Si me quedo corto de maquina con una aplicacion PHP, tendre que botar mi
maquina actual y buscar una suficientemente grande, cuando llegue a los
limites de esa maquina tendre que reescribir mi aplicacion para que se
pueda distribuir, ademas seguramente tendre que crear o habilitar algun
framework para que todo siga funcionando (transacciones distribuidas por
ejemplo).  "El que no haya tenido que reescribir una aplicacion en PHP
para poder escalar que tire la primera piedra"

Hay muchos mitos en cuanto al uso de recursos de java, si bien es cierto
consume bastante mas memoria como base (32MB), puedo decirle a la
maquina virtual hasta donde crecer, eso es manejable.  En las
aplicaciones web que he visto instaladas y en funcionamiento con un uso
intensivo, el uso de memoria no es mas alla de 512MB y el uso de CPU
normalmente esta bajo el 50% salvo en momentos de harto procesamiento
(reportes).

Lo siguiente está mas relacionado con Linux, en muchas partes es comun
que sobredimensionen las maquinas, y a veces se confunde el uso de
recursos de Java en una aplicacion desktop con el uso de recursos de
Java en una aplicacion J2EE.  La salida del comando free tampoco ayuda
mucho para quien no sabe interpretarla, digamos que no es intuitiva...
ayer un amigo me comentaba que por mucho tiempo los clientes pedian
agregar mas RAM porque free les decia que estaba toda ocupada!  Cuando
se dieron cuenta que era la segunda linea la importante, vieron que
siempre tenian mas del 75% de la memoria usada solo en cache/buffers

Saludos
-- 
Franco Catrin L.       TUXPAN
http://www.tuxpan.com/fcatrin

Responder a