Сохраните файл в определенную папку с помощью команды curl


182

В сценарии оболочки я хочу загрузить файл с некоторого URL-адреса и сохранить его в определенной папке. Какой конкретный флаг CLI я должен использовать для загрузки файлов в определенную папку с помощью curlкоманды, или как еще получить такой результат?


Казалось бы, программирование bash - это программирование ...
rjurney

Ответы:


282

Я не думаю, что вы можете указать путь для скручивания, но вы можете записать компакт-диск в папку, скачать и вернуть обратно.

cd target/path && { curl -O URL ; cd -; }

Или используя подоболочку.

(cd target/path && curl -O URL)

Оба пути будут загружаться только при наличии пути. -Oсохраняет имя удаленного файла. После загрузки он вернется в исходное местоположение.

Если вам нужно явно указать имя файла, вы можете использовать маленькую -oопцию:

curl -o target/path/filename URL

2
У меня есть эта команда: curl -LOk basename /packages" github.com/ziyaddin/xampp/archive/master.zip ". Но это говорит о том, что неправильное имя файла ->basename /packages
Зияддин Садыгов

10
Вы также можете использовать подоболочку, например так:(cd target/path; curl -O URL)
Ehtesh Choudhury

9
Какая разница между двумя? Первый компакт-диск попадает в каталог и загружает файл, затем компакт-диски. Второй остается в текущем каталоге и скручивает файл в указанное место. Второй кажется более простым.
Генри Чжу

9
@HenryZhu В первом случае имя файла происходит от имени файла на сервере. Во втором вы переименовываете загруженный контент в указанное вами имя.
turtlemonvh

4
Мне бы очень хотелось указать каталог, но использовать имя файла сервера. Кажется, что использование cd- лучший вариант в настоящее время, хотя это кажется немного неэлегантным.
StockB

4

curlне имеет опции для этого (без указания также имени файла), но wgetимеет. Каталог может быть относительным или абсолютным. Кроме того, каталог будет создан автоматически, если он не существует.

wget -P relative/dir "$url"

wget -P /absolute/dir "$url"
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.