27

从目录下载时是否可以在 wget 查询中使用通配符?基本上,我有一个网站,比如说www.download.example.com/dir/version/package.rpm. 但是,版本目录一直在变化,有时包含多个 RPM 包。是否有一个 wget 查询可以只获取我和version目录中的所有包而不知道该版本是什么?在我的理想世界中,查询将类似于:

wget www.download.example.com/dir/*/*.rpm

如果有办法做到这一点curl,那也可以。

4

3 回答 3

33

您不能在其中使用通配符,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,它对通配符有一些支持。看看手册页。还有一个关于 Linux 和 Unix的问题,涵盖了它在类似于你的场景中的用法。

于 2013-08-07T15:21:39.397 回答
15

如果您能够在查询中找到模式,则可以使用 bash 大括号扩展来执行此任务。

例如,在您的情况下,您可以使用以下内容:

wget www.download.example.com/dir/{version,old}/package{00..99}.rpm

此外,您可以将其与-A-R参数结合起来过滤您的结果。

于 2014-06-11T10:55:24.400 回答
2

尽管上述解决方案有效,但当您只想下载某些目录时它会失败,但不是全部。例如,如果您有:

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/

因为,我认为您不能在-Aand-R列表中使用目录。(?)

于 2014-01-15T13:49:10.673 回答