2012-06-27 2 views
6

Ich versuche, den Inhalt einer Website mit dem Tool wget herunterzuladen. Ich habe die Option -R verwendet, um einige Dateitypen abzulehnen. Aber es gibt einige andere Dateien, die ich nicht herunterladen möchte. Diese Dateien werden wie folgt benannt und haben keine Erweiterungen.Wie verwendet man reguläre Ausdrücke in wget zum Ablehnen von Dateien?

string-ID 

zum Beispiel:

newsbrief-02 

Wie ich wget kann nicht sagen, diese Dateien zum Download (die Dateien, die ihren Namen mit dem angegebenen Zeichenfolge beginnen)?

Antwort

4

Sie können keinen regulären Ausdruck im Schlüssel wget -R angeben, aber Sie können eine Vorlage angeben (wie eine Dateivorlage in einer Shell).

Die Antwort sieht so aus:

$ wget -R 'newsbrief-*' ... 

Sie auch ? und Symbolklassen [] verwenden können.

Weitere Informationen finden Sie unter info wget.

18

Da (scheinbar) v1.14 wget akzeptiert reguläre Ausdrücke: --reject-regex und --accept-regex (mit --regex-type posix kann standardmäßig auf pcre gesetzt werden, wenn mit libpcre Unterstützung kompiliert).

Vorsicht, es scheint, Sie können --reject-regex nur einmal pro wget Anruf verwenden. Das heißt, Sie haben | in einer einzigen regulären Ausdruck verwenden, wenn Sie auf mehrere Regex auswählen möchten:

wget --reject-regex 'expr1|expr2|…' http://example.com 
+3

Danke für das Beispiel mit mehreren regex. – GregHNZ

+0

Funktioniert reject-regex mit Dingen wie '.' oder' * ', welche Art von Regex ist es, Extended Regex oder PCRE Regex? – CMCDragonkai

+0

@CMCDragonkai Der zweite Teil Ihrer Frage ist bereits in meiner Antwort angesprochen. Es funktioniert mit "." Und "*", z.B. 'wget -r --reject-regex". * foobar. * "http: // example.com" verwirft 'http: // example.com/foobar /'. –