• Publicidad

Buscar archivo mediante Net::FTP

Así que programas sin strict y las expresiones regulares son otro modo de hablar. Aquí encontrarás respuestas de nivel avanzado, no recomendable para los débiles de corazón.

Buscar archivo mediante Net::FTP

Notapor piero66 » 2009-03-05 12:01 @542

Buenas....

Quiero buscar un archivo en una ruta donde hay más de 100 directorios... pero en la librería Net::FTP no encontré ningún comando que me ayude a buscar un archivo dentro de todos esos directorios,.. no sé si alguien aquí sepa cómo puedo hacerle...

También busqué en esta librería... Net::FTP::File... pero nada.

Ni sé si exista una librería que me permita buscar archivos dentro de una conexión con FTP...

¡¡ Gracias !!
piero66
Perlero nuevo
Perlero nuevo
 
Mensajes: 95
Registrado: 2008-05-22 12:00 @541

Publicidad

Notapor explorer » 2009-03-05 12:33 @564

El protocolo FTP no cuenta con ningún comando para buscar ficheros en el servidor.

Como mucho, cuenta con comandos para cambiar de directorio y listar los ficheros contenidos en él.

Lo normal es recorrer de forma recursiva todos los directorios, capturar el listado de todos los ficheros, y una vez que tengamos toda esa información podremos buscar desde el lado del cliente (nuestro programa) el fichero que buscamos.

Actualización: bueno, sí que hay una forma de buscar en el servidor, pero depende de las facilidades que nos dé ese servidor. Con el comando literal o quote de FTP, podemos ejecutar un comando en el lado del servidor. Si, por ejemplo, en ese servidor tiene instalado una utilidad de búsqueda como por ejemplo el locate, entonces sí que obtendremos la respuesta.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor piero66 » 2009-03-05 15:33 @689

Ya hice algo de lo que me recomendaste, es decir... ir recorriendo poco a poco los directorios hasta encontrar el archivo

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
$fil = 'L1.A1001001A09A08B54917A.V1';


$ftp->cwd("/data/lbosdata/00003");
my @Files = $ftp->ls();
$i=0;
$termina=0;
 do{

$ftp->cwd("/data/lbosdata/00003/$Files[$i]");

     if($ftp->isfile($fil)) {
         print "Existe","\n";
         $ubicacion = $ftp->pwd();
         print "Ubicacion: $ubicacion","\n";;
         $termina=1;
     }else{
         $i++;
     }
 } until $termina ==1;
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4


y ya me lo localiza y todo bien... pero ahora con el pex que me encontré es que quiero que me encuentre todos los archivos que cumplan con cierto criterio, algo así como una búsqueda avanzada...

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
$fil = 'L1.A1001001A09A08B54917A*
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Del "*" hacia atrás es lo que me interesa... la extensión que sea, solo que cumpla con esto... ('L1.A1001001A09A08B54917A).
piero66
Perlero nuevo
Perlero nuevo
 
Mensajes: 95
Registrado: 2008-05-22 12:00 @541

Notapor explorer » 2009-03-05 17:16 @761

Debes usar una expresión regular.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor piero66 » 2009-03-06 12:09 @548

sí... no había pensado en eso... pero la verdad no sé cómo comparar mi expresión contra cada uno de los archivos del directorio actual, por que con mi archivo esta línea comparaba

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
if($ftp->isfile($fil))
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


pero con una expresión... no sé cómo sería... me he bloqueadooo :oops:

ejemplo:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
if ($????? = ~/$expresion/){
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
piero66
Perlero nuevo
Perlero nuevo
 
Mensajes: 95
Registrado: 2008-05-22 12:00 @541

Notapor explorer » 2009-03-06 13:03 @585

Es $fil con lo que debes aplicar la expresión regular.

P.D. Estás en el foro Experto.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Avanzado

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 5 invitados