Как скачать файл с curl -O, исключая параметры url? - PullRequest
0 голосов
/ 06 марта 2019

Я застрял на 2 часа в простом процессе, потому что меня не устраивает bash script & regex: (

Я хотел бы загрузить файл с помощью bash script. Целевой файл доступен по адресуURL со следующим шаблоном имени:

https://domain-name.com/JAWSDB_xxxxxxxxxxxxxxxxx.sql.gz?AWSAccessKeyId=XXXXXXXXXXXXXXXX&Expires=xxxxxx&Signature=%2XXXXXXXXXXXXXXXXXXXX

Моя первая идея состояла в том, чтобы использовать curl -O, но он создает действительно грязные имена файлов, включая параметры URL, поэтому я хотел бы оставить только следующую часть JAWSDB_xxxxxxxxxxxxxxxxx.sql.gz (иудалить параметры конечного URL).

Я нашел регулярное выражение .+?(?=\?), которое, похоже, удаляет URL-адреса, но я не знаю, как заставить его работать с командой curl -O.

Большое спасибо.

(PS: я разрабатываю на OSX и планирую запустить скрипт на Linux)

1 Ответ

0 голосов
/ 06 марта 2019

Если вы хотите, чтобы curl выполнял тяжелую работу, дайте --remote-header-name снимок, который будет принимать имя объекта с сервера, а не извлекать имя файла из URL-адреса с помощью curl.

curl --remote-header-name -O 
 https://codeload.github.com/curl/curl/zip/master?name=value
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 4708k    0 4708k    0     0  1677k      0 --:--:--  0:00:02 --:--:-- 1676k
curl: Saved to filename 'curl-master.zip'
ls -lt
total 21304
-rw-r--r--     1 randrews  wheel  4821944 Mar  6 13:56 curl-master.zip

Похоже, что JAWSDB_xxxxxxxxxxxxxxxxx.sql.gz может быть параметризовано в вашем сценарии, что, если оно включено здесь, поможет обеспечить руководство.

Если это так, то вы можете перенаправить вывод curl через -O в файл по вашему выбору.

curl -O https://domain-name.com/JAWSDB_xxxxxxxxxxxxxxxxx.sql.gz?AWSAccessKeyId=XXXXXXXXXXXXXXXX&Expires=xxxxxx&Signature=%2XXXXXXXXXXXXXXXXXXXX > JAWSDB_xxxxxxxxxxxxxxxxx.sql.gz
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...