卷曲链接列表并根据 URL 层次结构保存文件

问题描述 投票:0回答:1

从第一个 API 调用开始,将返回一个 JSON 响应,其中包含一堆链接。我想卷曲每个链接,并将文件下载到基于最后 3 个路径段的位置。

例如,如果URL是

https://data.ninjakiwi.com/btd6/races/The_Olympics_lzlqex8k/metadata
,那么我想将文件下载到
races/The_Olympics_lzlqex8k/metadata.json
。 显然
cut
无法处理从末尾开始的索引,因此我硬编码了要跳过的斜杠数量(包括 https:// 中的 2 个)。我想出了一个示例命令。有没有更优雅的方式来写这个? xargs 向我展示了这可能不需要循环和更少的子 shell 使用。

for url in $(curl https://data.ninjakiwi.com/btd6/races | jq -r '.body [] | .leaderboard, .metadata'); do         
echo $url; curl --create-dirs -o $(echo $url | cut -d/ -f5-).json $url; done
bash curl jq xargs
1个回答
0
投票

你不需要循环。这应该有效:

curl https://data.ninjakiwi.com/btd6/races |
jq -r '.body[] | .leaderboard, .metadata | "url = "+., "output = "+((./"/")[-3:] | join("/"))+".json"' |
curl -Z -K - --create-dirs
© www.soinside.com 2019 - 2024. All rights reserved.