2012-06-27 6 views
6

Sto provando a scaricare i contenuti di un sito web usando lo strumento wget. Ho usato l'opzione -R per rifiutare alcuni tipi di file. ma ci sono altri file che non voglio scaricare. Questi file sono denominati come segue e non hanno estensioni.Come utilizzare le espressioni regolari in wget per rifiutare i file?

string-ID 

ad esempio:

newsbrief-02 

Come posso dire wget non scaricare questi file (i file che i loro nomi iniziano con la stringa specificata)?

risposta

4

Non è possibile specificare un'espressione regolare nella chiave wget -R, ma è possibile specificare un modello (come il modello di file in una shell).

La risposta appare come:

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

È inoltre possibile utilizzare ? e simbolo classi [].

Per ulteriori informazioni, vedere info wget.

18

Dal momento che (a quanto pare) v1.14 wget accetta espressioni regolari: --reject-regex e --accept-regex (con --regex-type posix per impostazione predefinita, può essere impostato per pcre se compilato con libpcre supporto).

Attenzione che sembra possibile utilizzare --reject-regex una sola volta per chiamata wget. Cioè, è necessario utilizzare | in un unico regex se si desidera selezionare su diverse espressioni regolari:

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

Grazie per l'esempio con diverse espressioni regolari. – GregHNZ

+0

Does reject-regex funziona con cose come '.' o' * ', che tipo di regex è, regex estesa o regex PCRE? – CMCDragonkai

+0

@CMCDragonkai La seconda parte della tua domanda è già stata affrontata nella mia risposta. Funziona con '.' e' * ', ad es. 'wget -r --reject-regex". * foobar. * "http: // example.com' scarterà' http: // example.com/foobar/'. –

Problemi correlati