Запрос curl для пропуска отсутствующих файлов

Вопрос или проблема

Существует ли способ сказать curl, чтобы он не скачивал файл, когда его нет на сервере?

Я использую оболочку Mac OS X для загрузки нескольких файлов с помощью curl.

Команда выглядит так:

curl -s -# "http://URL/session[1-12].pdf" -o "Slides/session#1.pdf";

Есть ли способ сказать curl, чтобы он пропускал, скажем, session4.pdf, когда этого файла на самом деле не существует? По умолчанию он скачивает пустые файлы размером 2 КБ.

П.С. Надеюсь, я публикую это в правильном месте, извините, если это должно быть на ветке Apple StackExchange. Поскольку это оболочка, я подумал, что это будет более уместно.

Используйте опцию -f, --fail, чтобы попросить curl безмолвно игнорировать ошибки и он не будет создавать пустые файлы.

Другими словами, ваша команда должна выглядеть так:

curl -f -s -# "http://URL/session[1-12].pdf" -o "Slides/session#1.pdf";

curl 8.10.0 – выпущен 11 сентября 2024 года теперь имеет флаг --skip-existing.

curl -LJO --skip-existing <ваша_ссылка>

https://curl.se/ch/8.10.0.html

Последнюю версию curl можно установить через brew/winget/choco

Ответ или решение

Конечно! Если вы хотите использовать curl для загрузки файлов, но хотите пропустить те, которые отсутствуют на сервере, вы можете воспользоваться опцией -f (или --fail). Эта опция заставляет curl завершать работу с ошибкой, не создавая пустые файлы, когда запрашиваемый ресурс возвращает ошибку (например, 404 Not Found).

Пример команды с добавленной опцией будет выглядеть следующим образом:

curl -f -s -# "http://URL/session[1-12].pdf" -o "Slides/session#1.pdf"

В данной команде:

  • -f — пропускает загрузку пустых файлов в случае ошибки HTTP.
  • -s — работает в режиме "тихой" загрузки (без вывода прогресса и сообщений об ошибках).
  • -# — отображает прогресс в виде полоски.
  • -o — указывает наименование выходного файла.

Также стоит отметить, что с версии curl 8.10.0 добавлена новая опция --skip-existing, которая позволяет пропустить загрузку файлов, если они уже существуют:

curl -LJO --skip-existing <ваша_ссылка>

Эта опция может быть особенно полезной, если вы загружаете множество файлов и хотите избежать перезаписи существующих.

Обновленную версию curl можно установить через менеджеры пакетов, такие как brew для macOS, winget для Windows или choco.

Таким образом, используя указанные опции, вы сможете с легкостью управлять процессом загрузки файлов с помощью curl, избегая создания ненужных пустых файлов.

Оцените материал
Добавить комментарий

Капча загружается...