2013-08-07 107 views
22

從目錄下載時,可以在wget查詢中使用通配符嗎?基本上,我有一個網站,說,www.download.example.com/dir/version/package.rpm。但是,版本目錄一直在變化,有時包含多個RPM包。是否有一個wget查詢可以讓我只用version目錄中的所有軟件包而不知道該版本是什麼?在我的理想世界,查詢將是這樣的:在wget或curl查詢中使用通配符

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

如果有一種方法與curl做到這一點,這將正常工作。

回答

24

您不能在wget中使用通配符,但-A標誌應該起作用。從wget manpage

您想要從http服務器上的目錄下載所有gif。你試過wget http://www.server.com/dir/*.gif,但是這不起作用,因爲http檢索不支持globbing。在這種情況下,使用方法: wget -r -l1 --no-parent -A.gif http://www.server.com/dir/

編輯:發現了一個related question

關於目錄:

有一個叫LFTP工具,它具有通配一定的支持。看看manpage。還有另一個question on Linux & Unix,涵蓋了與您的情況相似的使用情況。

+1

好的,這允許我指定我只想要'.rpm'文件。但是,模糊的目錄名仍然存在。我如何告訴'wget'目錄名稱是不相關的,並跳轉到包含RPM文件的目錄。 – mart1n

+0

@ mart1n增加了lftp的信息來回答,希望它有幫助 – 2013-08-07 18:44:11

+0

啊,整潔。 LFTP實際上工作得很好。謝謝! – mart1n

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/ 

Si nce,我不認爲你可以使用-A-R列表中的目錄。 (?)

7

如果您能夠在查詢中找到模式,則可以使用bash括號擴展來完成此任務。

例如,在你的情況,你可以使用類似:

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

此外,您還可以與-A-R參數一起使用能過濾搜索結果。