加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Ruby FTP从文件夹中分离文件

发布时间:2020-12-16 22:41:03 所属栏目:百科 来源:网络整理
导读:我正在尝试抓取FTP并递归下拉所有文件. 到目前为止,我试图用一个目录来下载 ftp.list.each do |entry| if entry.split(/s+/)[0][0,1] == "d" out[:dirs] entry.split.last unless black_dirs.include? entry.split.last else out[:files] entry.split.last
我正在尝试抓取FTP并递归下拉所有文件.

到目前为止,我试图用一个目录来下载

ftp.list.each do |entry|
    if entry.split(/s+/)[0][0,1] == "d"
      out[:dirs] << entry.split.last unless black_dirs.include? entry.split.last
    else
      out[:files] << entry.split.last unless black_files.include? entry.split.last
    end

但结果是,如果将列表拆分到最后一个空格,则带有空格的文件名和目录将被取错.
在这里需要一点逻辑帮助.

解决方法

您还可以使用正则表达式.我把它放在一起.请验证它是否适合您,以及我不知道您的目录列表看起来不同.你必须使用Ruby 1.9 btw.
reg = /^(?<type>.{1})(?<mode>S+)s+(?<number>d+)s+(?<owner>S+)s+(?<group>S+)s+(?<size>d+)s+(?<mod_time>.{12})s+(?<path>.+)$/

match = entry.match(reg)

您可以按名称访问元素

match [:type]包含一个’d’,如果它是一个目录,一个空格,如果它是一个文件.

所有其他元素也都存在.最重要的是匹配[:path].

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读