Próbuję zaindeksować FTP i wszystkie pliki rekurencyjnie.Ruby FTP Oddzielanie plików od folderów
Do tej pory starałem się ciągnąć w dół katalogu z
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
Ale okazuje się, jeśli podzielić listę aż do ostatniego miejsca, nazwy plików i katalogów ze spacjami są pobierane źle. Potrzebujesz trochę pomocy w logice tutaj.
Możesz również użyć 'entry [1 ..- 1] .split [5] [13 ..- 1]', aby uzyskać ścieżkę i 'entry [0]', aby uzyskać typ –
Czy to wyrażenie regularne działa dla wszystkich przypadki? Istnieje ogromna różnorodność serwerów FTP. Mamy klientów, którzy używają mało znanych, opartych na Windowsach serwerów, a zwracana przez nich lista plików wygląda zupełnie inaczej niż wersje Linuksa. Więc to, co zrobiłem, to dla każdego wpisu do pliku/katalogu wypróbowałem w nim CD, a jeśli to nie działa - rozważ to jako plik :) Działa jak urok. –