gpt4 book ai didi

regex - 如何使用 curl -O 下载不包含 url 参数的文件?

转载 作者:太空宇宙 更新时间:2023-11-04 11:54:03 30 4
gpt4 key购买 nike

我在一个简单的过程中被困了 2 个小时,因为我对 bash 脚本和正则表达式感到不舒服:(

我想使用 bash 脚本下载文件。目标文件可通过具有以下名称模式的 url 访问:

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

我的第一个想法是使用 curl -O 但它会创建非常脏的文件名,包括 url 参数,所以我只想保留以下部分 JAWSDB_xxxxxxxxxxxxxxxxx.sql.gz(并删除尾随的 url 参数).

我发现了一个正则表达式 .+?(?=\?) 似乎删除了 url prams 但我不知道如何让它与 curl -O< 一起工作命令。

非常感谢。

(ps:本人在osx上开发,打算在linux上运行脚本)

最佳答案

如果你想让 curl 完成繁重的工作,给 --remote-header-name 一个镜头,它将接受来自服务器的对象名称,而不是从 curl 取消引用的 url 中提取文件名。

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 可能在您的脚本中被参数化,如果包含在此处将有助于提供指导。

如果是这种情况,那么您可以通过 -O 将 curl 的输出重定向到您选择的文件。

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

关于regex - 如何使用 curl -O 下载不包含 url 参数的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55030165/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com