2011-05-31 22 views
7

Estoy usando el siguiente código para intentar obtener todos los archivos de ftp usando Ruby.Ruby Net :: FTP, extraer el nombre de archivo de ftp.list()

files = ftp.list() 

files.each do |file| 
    ftp.gettextfile(file) 
end 

El problema es que ftp.list devuelve toda una línea de información, no solo el nombre del archivo, p.

-rw-r--r-- 1 ftp ftp    0 May 31 11:18 brett.txt 

¿Cómo se extrae el nombre de archivo de esta cadena?

Muchas gracias

+0

solucionado. Ahh Debo usar ftp.nlist() para obtener nombres de archivos solamente. – Brettski

+1

ftp.nlst, no ftp.nlist. –

Respuesta

-2

Sin embargo, list parece ser útil, ya que se puede pasar en una coincidencia de patrones, que no parece que los soportes nlst. Acabo de hacer un corte rápido y sucio a hacer el trabajo de lista de salida:

ftp.list("*.zip") do |zipfile| 
    zipfile = zipfile.split(/\s+/).last 
    # ... do something with the file 
end 
+0

'nlst' admite patrones también ... – severin

0

Si desea procesar la salida de ftp.list se puede encontrar net-ftp-list útil.

16

Puede utilizar el método público nlst como esto

files = ftp.nlst("*.zip")|ftp.nlst("*.txt")|ftp.nlst("*.xml") 

#optionally exclude falsely matched files 
exclude = /\.old|temp/ 

#exclude files with 'old' or 'temp' in the name 
files = files.reject{ |e| exclude.match e } #remove files matching the exclude regex 

files.each do |file| 
    #do something with each file here 
end 
Cuestiones relacionadas