Получить дату изменения файла с FTP-сервера - PullRequest
0 голосов
/ 22 апреля 2020

Построение этого вопроса ( Получение измененного DateTime файла с FTP-сервера ), понятно, как получить значение даты изменения. Однако полная дата не возвращается, даже если она видна с FTP-сайта.

Здесь показано, как получить значения даты для файлов в ftp: //ftp.FreeBSD.org/pub/FreeBSD/

library(curl)
library(stringr)

con <- curl("ftp://ftp.FreeBSD.org/pub/FreeBSD/")
dat <- readLines(con)
close(con)

no_dirs <- grep("^d", dat, value=TRUE, invert=TRUE)
date_and_name <- sub("^[[:alnum:][:punct:][:blank:]]{43}", "", no_dirs)
dates <- sub('\\s[[:alpha:][:punct:][:alpha:]]+$', '', date_and_name)
dates
## [1]  "May 07  2015" "Apr 22 15:15" "Apr 22 10:00"

Некоторые даты в формате месяц / день / год, остальные в формате месяц / день / час / минута.

Глядя на сайт FTP, все даты в формате месяц / день / год, час / минуты / секунды.

enter image description here

Я предполагаю, что он как-то связан со стандартами формата Unix (объяснено в Команда FTP детали, похоже, не возвращает год файл был изменен, есть ли способ обойти это? ). Было бы неплохо получить полную дату.

1 Ответ

0 голосов
/ 22 апреля 2020

Если вы используете download.file, вы получите html представление каталога, который вы можете проанализировать с помощью пакета xml2.

read_ftp <- function(url)
{
  tmp <- tempfile()
  download.file(url, tmp, quiet = TRUE)
  html <- xml2::read_html(readChar(tmp, 1e6))
  file.remove(tmp)
  lines <- strsplit(xml2::xml_text(html), "[\n\r]+")[[1]]
  lines <- grep("(\\d{2}/){2}\\d{4}", lines, value = TRUE) 
  result <- read.table(text = lines, stringsAsFactors = FALSE)
  setNames(result, c("Date", "Time", "Size", "File"))    
}

, который позволяет вам просто сделать это:

read_ftp("ftp://ftp.FreeBSD.org/pub/FreeBSD/")
#>         Date    Time      Size        File
#> 1 05/07/2015 12:00AM     4,259  README.TXT
#> 2 04/22/2020 08:00PM        35   TIMESTAMP
#> 3 04/22/2020 08:00PM Directory development
#> 4 04/22/2020 10:00AM     2,325   dir.sizes
#> 5 11/12/2017 12:00AM Directory         doc
#> 6 11/12/2017 12:00AM Directory       ports
#> 7 04/22/2020 08:00PM Directory    releases
#> 8 11/09/2018 12:00AM Directory   snapshots

Создано в 2020-04-22 пакетом представ. (v0.3.0)

...