2010-11-23 19 views
5

Necesito conectarme a un sitio ftp y descargar un grupo de archivos (máximo 6) nombrados como D * .txt. ¿podría ayudarme a codificar esto en Ruby? El siguiente código sóloDescargar varios archivos FTP como d * .txt en ruby ​​

ftp = Net::FTP::new("ftp_server_site") 
ftp.login("user", "pwd") 
ftp.chdir("/RemoteDir") 
fileList= ftp.nlst 
ftp.getbinaryfile(edi, edi) 
ftp.close 

Gracias

Respuesta

7

La manera más simple sería colocar a través de la lista de archivos en fileList.

Aquí es un ejemplo (no probado):

ftp = Net::FTP::new("ftp_server_site") 
ftp.login("user", "pwd") 
ftp.chdir("/RemoteDir") 
fileList = ftp.list('D*.txt') 
fileList.each do |file| 
    ftp.gettextfile(file) 
end 
ftp.close 

Espero que esto ayude.

+0

correcta. Eso es lo que hace un cliente FTP para un 'mget'. –

+0

¡gracias funcionó! – sada

3

Esa solución no funcionó para mí, aunque puede depender del servidor FTP. Para mí, ftp.list arroja resultados similares a ls -l en Linux. He utilizado la siguiente expresión regular para obtener sólo el nombre de archivo del primer archivo de la lista devuelta por:

ftp.list('D*.txt')[0][/.*(\d{2}):(\d{2})\s{1}(?<file>.+)$/,1] 
+0

Eso es correcto, por ejemplo, en el servicio de ftp de Mainframe para conjuntos de datos –

6

matriz de nombres de ficheros en Dir se puede obtener por el método de "nlst":

files = ftp.nlst('*.zip') 

files.each do |file| 
    puts file 
end 

#=> first.zip, second.zip, third.zip, ... 
Cuestiones relacionadas