如何使用cURL下载多个文件 范围参数下载时文件被覆盖如何解决
问题原因
你使用-o参数指定了固定文件名file.svg,curl执行范围批量请求时,所有返回的内容都会写入同一个固定文件,自然会出现后续内容覆盖之前内容的问题。
解决方案
方法1:使用curl内置的#占位符匹配范围变量
这是最简单的原生解决方案,只需要修改-o的文件名参数,用#1匹配第一个范围参数的取值,自动生成不同的文件名:
curl -o "#1.svg" "example.com/[1-100]"
执行后会自动生成1.svg、2.svg……100.svg的独立文件,不会互相覆盖。
如果你需要给文件名加统一前缀,可以修改为:
curl -o "file_#1.svg" "example.com/[1-100]"
最终生成的文件名为file_1.svg、file_2.svg等。
方法2:使用大写-O参数自动识别文件名
如果你的目标资源URL本身就包含后缀,比如example.com/[1-100].svg,可以直接用大写-O参数,curl会自动取URL的最后一段作为文件名:
curl -O "example.com/[1-100].svg"
补充说明
如果URL中存在多组范围参数,比如example.com/[1-10]/[20-30].svg,可以用#1、#2分别对应两组范围的取值,自定义命名规则。
内容的提问来源于stack exchange,提问作者Linar Galiev
相关产品推荐
相关产品推荐

