cURL调用中的正则表达式

时间:2018-08-03 13:41:30

标签: bash curl

我有这样的cURL调用:

curl --silent --max-filesize 500 --write-out "%{http_code}\t%{url_effective}\n" 'http://fmdl.filemaker.com/maint/107-85rel/fmpa_17.0.2.[200-210].dmg' -o /dev/null

此调用将生成具有HTTP代码(通常为200或404)的URL列表,如下所示:

404 http://fmdl.filemaker.com/maint/107-85rel/fmpa_17.0.2.203.dmg
404 http://fmdl.filemaker.com/maint/107-85rel/fmpa_17.0.2.204.dmg
200 http://fmdl.filemaker.com/maint/107-85rel/fmpa_17.0.2.205.dmg
404 http://fmdl.filemaker.com/maint/107-85rel/fmpa_17.0.2.206.dmg

唯一有效的URL是200 HTTP代码之前的URL,因此我想在cURL中放置一个正则表达式,以便它仅下载以200开头的行

关于如何在不使用bash脚本的情况下执行此操作的任何想法?

提前谢谢

1 个答案:

答案 0 :(得分:0)

您可以使用以下内容:

curl --silent -f --max-filesize 500 --write-out "%{http_code}\t%{url_effective}\n" -o '#1.dmg' 'http://fmdl.filemaker.com/maint/107-85rel/fmpa_17.0.2.[200-210].dmg' 

这将尝试访问每个url,当它不是404或不是太大时,将其下载到名称将基于url索引的文件中。

使用-f标志可以避免在HTTP代码不成功时输出响应的内容,而-o标志可以指定输出文件,其中#1对应于您的[200-210]范围的有效值(添加其他[]{}可以使您通过其索引来引用URL的其他部分)。

请注意,在我的测试过程中,--max-filesize 500标志阻止了唯一未出现在404 fmpa_17.0.2.205.dmg

中的URL的下载。