从目录下载时是否可以在wget查询中使用通配符?基本上,我有一个网站,比如www.download.example.com/dir/version/package.rpm
。但是,版本目录一直在变化,有时包含多个RPM包。是否只有一个wget查询只能获取version
目录中的所有包而不知道该版本是什么?在我的理想世界中,查询将类似于:
wget www.download.example.com/dir/*/*.rpm
如果有办法用curl
执行此操作,那也可以。
答案 0 :(得分:27)
您不能在wget
中使用通配符,但-A
标志应该有效。来自wget manpage:
您想从http服务器上的目录下载所有GIF。您尝试了
wget http://www.server.com/dir/*.gif
,但这不起作用,因为http检索不支持通配。在这种情况下,使用:wget -r -l1 --no-parent -A.gif http://www.server.com/dir/
修改:找到related question
关于目录:
有一个名为LFTP
的实用程序,它支持globbing。看看manpage。还有另一个question on Linux & Unix涵盖了与您类似的场景中的用法。
答案 1 :(得分:10)
如果您能够在查询中找到模式,则可以使用bash大括号扩展来执行此任务。
例如,在您的情况下,您可以使用以下内容:
wget www.download.example.com/dir/{version,old}/package{00..99}.rpm
此外,您可以将其与-A
和-R
参数结合使用,以过滤结果。
答案 2 :(得分:1)
虽然上述解决方案有效,但是当您只想下载某些目录时它会失败,但不是全部。例如,如果你有:
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
列表中的目录。 (?)