2010-11-23 5 views
5

में कई एफ़टीपी फाइलों जैसे डी * .txt डाउनलोड करें मुझे एक FTP साइट से कनेक्ट करने और डी * .txt नामक फ़ाइलों का एक समूह (अधिकतम 6) डाउनलोड करने की आवश्यकता है। क्या आप कृपया मुझे रूबी में कोड करने में मदद कर सकते हैं? निम्नलिखित कोड सिर्फरूबी

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

धन्यवाद

उत्तर

7

सबसे आसान तरीका fileList में फ़ाइलों की सूची के माध्यम से लूप करने के लिए किया जाएगा।

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 

आशा इस मदद करता है:

यहाँ एक उदाहरण (untested) है।

+0

सही मैं सिर्फ सूची द्वारा लौटाए गए पहले फ़ाइल का फ़ाइल नाम पाने के लिए निम्नलिखित regex का इस्तेमाल किया। एफ़टीपी क्लाइंट एक 'mget' के लिए करता है। –

+0

धन्यवाद यह काम किया! – sada

3

यह समाधान मेरे लिए काम नहीं करता है, हालांकि यह FTP सर्वर पर निर्भर हो सकता है। मेरे लिए, ftp.list लिनक्स पर ls -l के समान परिणाम देता है।

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

यह सही है, उदाहरण के लिए डेटासेट के लिए मेनफ्रेम एफटीपी सेवा में –

6

निर्देशिका में फ़ाइल नाम की सरणी आप "nlst" विधि द्वारा प्राप्त कर सकते हैं:

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

files.each do |file| 
    puts file 
end 

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