[英]Using wildcards in wget or curl query
从目录下载时是否可以在wget查询中使用通配符? 基本上,我有一个网站,比如www.download.example.com/dir/version/package.rpm
。 但是,版本目录一直在变化,有时包含多个RPM包。 是否有一个wget查询只能获取我和version
目录中的所有软件包而不知道该版本是什么? 在我的理想世界中,查询将是这样的:
wget www.download.example.com/dir/*/*.rpm
如果有办法用curl
做这个,那也行。
您不能在wget
使用通配符,但-A
标志应该可以使用。 从wget手册页 :
您想从http服务器上的目录下载所有GIF。 您尝试过
wget http://www.server.com/dir/*.gif
,但这不起作用,因为http检索不支持globbing。 在这种情况下,请使用:wget -r -l1 --no-parent -A.gif http://www.server.com/dir/
编辑:发现了一个相关的问题
关于目录:
有一个名为LFTP
的实用程序,它对globbing有一些支持。 看一下联机帮助页 。 还有一个关于Linux和Unix的问题 ,涵盖了在类似于你的场景中的用法。
如果您能够在查询中找到模式,则可以使用bash大括号扩展来执行此任务。
例如,在您的情况下,您可以使用以下内容:
wget www.download.example.com/dir/{version,old}/package{00..99}.rpm
此外,您可以将其与-A
和-R
参数结合使用以过滤结果。
虽然上面的解决方案有点工作,但是当你只想下载某些目录时它会失败,但不是全部。 例如,如果你有:
http://site.io/like/
http://site.io/like2/
http://site.io/nolike/
而是将所需的目录名称放在文本文件中,例如: dirs.txt:
like/
like2/
然后使用wget
和以下命令选项-i dirs.txt -B <base-URL>
如下所示:
wget -nH -nc -np -r -e robots=off -R "index.html*" -i dirs.txt -B http://site.io/
因为,我认为你不能使用-A
和-R
列表中的目录。 (?)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.