Вопрос или проблема
Существует ли способ сказать 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
, избегая создания ненужных пустых файлов.