Я создаю простой скрипт Bash для извлечения времени / даты модификации файла из удаленного файла через HTTP.
Пример файла: http://example.com/bar/example.pdf
Можно ли это сделать без загрузки самого файла? Если нет, то какая лучшая альтернатива?
Если честно, не напрямую.
Вам нужно будет получить данные с удаленного сайта, чтобы получить информацию о файле. Обычно это делается с помощью HEAD
запроса, но некоторые (большинство?) Серверы не реализовали его правильно и доставляют файл целиком, как при выполнении GET
запроса. Предполагая, что вы curl
установили:
curl -s -v -X HEAD http://foo.com/bar/baz.pdf 2>&1 | grep '^< Last-Modified:'
может дать вам то, что вы хотите, но, как уже говорилось, это сильно зависит от сервера.
HEAD
. Тем не менее, и эти сайты дадут вам результат, потому что они должны все доставлять.--head
вариант вместо-X HEAD
как его более лаконична , поэтому команда стала бы:curl -s -v --head http://foo.com/bar/baz.pdf 2>&1 | grep '^< Last-Modified:'
curl -svX HEAD
еще более кратко ...Ответ сервера обычно имеет
Last-Modified
поле, вы можете проверить его, не загружая файл. Нет необходимости в использовании-X HEAD
, нет специальной опции-I
для этого (на-s
Подавляет вывод о ходе работы ) :Также в моем случае нет установленного curl (я делаю скрипт для встроенного устройства) , просто
wget
. Способ с помощью wget:В
--server-response
печатает заголовки, и--spider
опция заставляет не загружать страницы, а проверить их существование.источник
curl
лучший ответ, чем принятый. Возможно, сgrep -i
тех пор, как часто «последний измененный» имеет другой случай.