Foros del Web » Programación para mayores de 30 ;) » Programación General »

Buscar ocurrencias de palabras en varios ficheros

Estas en el tema de Buscar ocurrencias de palabras en varios ficheros en el foro de Programación General en Foros del Web. Hola! Estoy intentando hacer una aplicación, que dada una lista de palabras ( sacadas de un fichero) las busque por los archivos de una carpeta, ...
  #1 (permalink)  
Antiguo 16/04/2009, 04:34
 
Fecha de Ingreso: abril-2003
Mensajes: 32
Antigüedad: 21 años
Puntos: 0
Buscar ocurrencias de palabras en varios ficheros

Hola!

Estoy intentando hacer una aplicación, que dada una lista de palabras ( sacadas de un fichero) las busque por los archivos de una carpeta, y finalmente muestre un listado (html por ejemplo) con cada ocurrencia encontrada, en que archivo y en que linea.

¿Qué recomendáis? ¿Hay alguna librería ya preparada para esto o es mejor picárselo a mano?

Muchas gracias!
  #2 (permalink)  
Antiguo 16/04/2009, 06:47
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 3 meses
Puntos: 90
Respuesta: Buscar ocurrencias de palabras en varios ficheros

no creo que haya una librería que haga eso, es muy particular lo que estás buscando...

Igual hacerlo no debe ser muy complicado, primero creas un array con cada palabra a buscar, luego abres el directorio y por cada archivo lo abres y buscas cada palabra...Lo que si será medio pesado...no será para tener online no ?

de ser así deberías hacer un resumen de los archivos mejor en SQL y realizar las búsquedas por ahí...

Saludos
__________________
Esteban Quintana
  #3 (permalink)  
Antiguo 20/04/2009, 01:29
 
Fecha de Ingreso: abril-2003
Mensajes: 32
Antigüedad: 21 años
Puntos: 0
Respuesta: Buscar ocurrencias de palabras en varios ficheros

Si, algo parecido estoy haciendo. Abro los ficheros con las palabras que quiero buscar, las guardo todas en un array y voy recorriendo las carpetas a analizar recursivamente. Luego iré guardando las ocurrencias en una tabla y ya miraré como sacar el html de allí.

Sin embargo estoy teniendo un problema para recorrer recursivamente las carpetas.

Código:
#######################################################################
## procesaFicheros: Recibe un directorio
## Recorre el arbol de directorios recursivamente                    ##
#######################################################################
sub procesaFicheros(){  
  my $dir=shift;  
  my @sourcefiles;  
  if (opendir(DIRH,"$dir")){  
    @sourcefiles=readdir(DIRH);  
    closedir DIRH;  
    foreach (@sourcefiles){  

      next if ($_ eq "." || $_ eq "..");  
      #if (!($prueba =~ /test/)){  
        # PROCESAR FICHERO
        # print "$_\n";  
        &analizaFichero("$_");
      #}  
      procesaFicheros("$dir/$_") if (-d "$dir/$_" && ! -l "$dir/$_");  
    }  
  }else{  
    print "Error leyendo el directorio $dir\n";  
  }  
}  


#######################################################################
## analizaFichero: Recibe un fichero                                 ##
## Analiza un fichero buscando ocurrencias de palabras elegidas    ##
#######################################################################
sub analizaFichero{
  
  print "Entrando en analizaFichero para fichero ".$_."\n";
  my $counter = 0;
  if (!(-d "$_[0]")){  
    open FICHERO, $_[0] or die "No existe ".$fichero;
    while (<FICHERO>)
    {

      print $_;
      # Legal
      foreach $word (@legalwords_list){
        $counter++;
        if ($_=~/$word/){
          print $word." encontrada en línea ".$counter." en fichero ".$_[0]."\tCategoría: LEGAL";
        }
      }

    }
   close FICHERO;
  }
}
No me llega a leer todo, alguien sabe por qué puede ser?
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:53.