2013-08-07 36 views
22

Dizinlerden indirirken wget sorgularında joker karakterler kullanmak mümkün mü? Temel olarak, bir sitem var, www.download.example.com/dir/version/package.rpm. Bununla birlikte, sürüm dizini her zaman değişir ve bazen birden fazla RPM paketi içerir. Bu sürümün ne olduğunu bilmeden sadece bana ve version dizinindeki tüm paketleri alabilecek tek bir wget sorgusu var mı? de çalışmak curl ile bunu yapmanın bir yolu varsaWget veya curl sorgusunda joker karakterleri kullanma

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

: Benim İdeal bir dünyada, sorgu gibi bir şey olurdu.

cevap

24

wget numaralı joker karakterleri kullanamazsınız, ancak -A bayrağının çalışması gerekir. wget manpage'dan:

Tüm gifleri bir http sunucusundaki bir dizinden indirmek istiyorsunuz. wget http://www.server.com/dir/*.gif'u denediniz, ancak işe yaramadı çünkü http alma işlemi globbing'i desteklemiyor. Bu durumda, kullanın: wget -r -l1 --no-parent -A.gif http://www.server.com/dir/

Düzenleme: globbing için bazı desteği vardır LFTP adında bir yardımcı program var,

: Bir related question

İlişkin dizinleri bulundu. manpage'a bir göz atın. Kullanımınıza benzer bir senaryoda kullanımını kapsayan başka bir question on Linux & Unix10 var.

+1

Tamam, bu yalnızca '.rpm' dosyalarını istediğimi belirtmeme izin veriyor. Ancak, belirsiz dizin adı sorunu kalır. Dizin adının alakasız olduğunu ve RPM dosyalarını içeren dizine atlayacağını nasıl söylerim. – mart1n

+0

@ mart1n, cevap için lftp hakkında bilgi ekledi, umarım –

+0

Ah, neat yardımcı olur. LFTP aslında oldukça iyi çalıştı. Teşekkür ederim! – mart1n

1

Yukarıdaki çözüm türü çalışmalara rağmen, yalnızca belirli dizinleri indirmek istediğinizde başarısız olur, ancak hepsi değil. Örneğin varsa:

http://site.io/like/ 
http://site.io/like2/ 
http://site.io/nolike/ 

yerine bir metin dosyasına istediğiniz dizin adları koymak, örneğin: dirs.txt:

like/ 
like2/ 

Daha sonra aşağıdaki komutla wget kullanmak -i dirs.txt -B <base-URL> gibi seçenekler:

wget -nH -nc -np -r -e robots=off -R "index.html*" -i dirs.txt -B http://site.io/ 

Si nce, -A ve -R listelerinde dizinleri kullanabileceğinizi sanmıyorum. (?)

7

Sorgunuzda bir kalıp bulduysanız, bu görevi gerçekleştirmek için bash ayraç genişletmesini kullanabilirsiniz.

Örneğin, durumda, böyle bir şey kullanabilirsiniz: Ayrıca

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

, sonuçlarınızı filtrelemek için -A ve -R parametreleri ile bu birleştirebiliriz.

İlgili konular