私はFTPをクロールしてすべてのファイルを再帰的にプルダウンしようとしています。私はRuby 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
でディレクトリをプルダウンしようとしている。しかし、あなたが最後のスペースまでリストを分割した場合には、判明した今まで
、スペースを含むファイル名やディレクトリはフェッチ間違っています。 ここでロジックについて少し助けが必要です。
パスを取得するために 'entry [1 ..- 1] .split [5] [13. .. 1]'を使うこともできます –
この正規表現はすべてのケース? FTPサーバーは多種多様です。私たちには、あまり知られていない独自のWindowsベースのサーバーを使用するクライアントがあり、それらから返されるファイルのリストはLinuxのバージョンとはまったく異なります。だから、私がやったことは、各ファイル/ディレクトリのエントリにCDを試してみると、これがうまくいかない場合です - それをファイルと見なします:) 魅力のように動作します。 –