2010-11-23 4 views
5

Ich muss eine FTP-Site verbinden und eine Reihe von Dateien (max 6) mit dem Namen D * .txt herunterladen. Könnten Sie mir bitte helfen, dies in Ruby zu kodieren? der folgende Code nurLaden Sie mehrere FTP-Dateien wie d * .txt in Ruby

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

Dank

Antwort

7

Der einfachste Weg, eine Schleife durch die Liste der Dateien in fileList sein würde. Hier

ist ein Beispiel (nicht getestet):

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 

Hoffnung, das hilft.

+0

Richtig. Das macht ein FTP-Client für ein 'mget'. –

+0

danke es hat funktioniert! – sada

3

Diese Lösung funktionierte nicht für mich, obwohl es auf dem FTP-Server abhängen kann. Für mich liefert ftp.list ähnliche Ergebnisse wie ls -l unter Linux. Früher habe ich die folgende Regex nur die Dateinamen der ersten Datei durch Liste zurückgegeben zu bekommen:

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

Das ist richtig, zum Beispiel in Mainframe FTP-Service für Datensätze –

6

Array von Dateinamen in dir Sie durch „nlst“ Methode erhalten können:

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

files.each do |file| 
    puts file 
end 

#=> first.zip, second.zip, third.zip, ... 
Verwandte Themen