9

Я создаю простой скрипт Bash для извлечения времени / даты модификации файла из удаленного файла через HTTP.

Файл примера: http://example.com/bar/example.pdf

Можно ли это сделать без загрузки самого файла? Если нет, то какая лучшая альтернатива?

2 ответа2

12

Если честно, не напрямую.

Вам нужно будет получить данные с удаленного сайта, чтобы получить информацию о файле. Обычно это делается с помощью запроса HEAD , но некоторые (большинство?) серверы не реализовали это правильно и доставляют весь файл, так же как делают запрос GET . Предполагая, что у вас установлен curl :

curl -s -v -X HEAD http://foo.com/bar/baz.pdf 2>&1 | grep '^< Last-Modified:'

может дать вам то, что вы хотите, но, как уже говорилось, это сильно зависит от сервера.

6

Ответ сервера обычно имеет поле Last-Modified , вы можете проверить его, не загружая файл. Не нужно использовать -X HEAD , для этого есть специальная опция -I (-s подавляет вывод прогресса):

curl -sI http://example.com/bar/example.pdf | grep -i Last-Modified

Также в моем случае нет установленного curl (я делаю скрипт для встроенного устройства), просто wget . Способ с помощью wget:

wget --server-response --spider http://example.com/bar/example.pdf 2>&1 | grep -i Last-Modified

--server-response печатает заголовки, а опция --spider заставляет не загружать страницы, а проверять их существование.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .