2012-06-27 15 views
6

Estoy tratando de descargar los contenidos de un sitio web usando la herramienta wget. Utilicé la opción -R para rechazar algunos tipos de archivos. pero hay algunos otros archivos que no quiero descargar. Estos archivos se nombran de la siguiente manera y no tienen extensiones.¿Cómo usar expresiones regulares en wget para rechazar archivos?

string-ID 

por ejemplo:

newsbrief-02 

Cómo te puedo decir que no wget para descargar estos archivos (los archivos, que sus nombres comienzan con la cadena especificada)?

Respuesta

4

No puede especificar una expresión regular en la clave wget -R, pero puede especificar una plantilla (como la plantilla de archivo en un shell).

La respuesta se parece a:

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

También puede utilizar ? y símbolo clases [].

Para obtener más información, vea info wget.

18

Puesto que (aparentemente) v1.14 wget acepta expresiones regulares: --reject-regex y --accept-regex (con --regex-type posix por defecto, se puede configurar para pcre si se compila con el apoyo libpcre).

Tenga en cuenta que parece que puede usar --reject-regex solo una vez por wget llamada. Es decir, usted tiene que utilizar | en una sola expresión regular si desea seleccionar en varias expresiones regulares:

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

Gracias por el ejemplo con varias expresiones regulares. – GregHNZ

+0

¿Reject-regex funciona con cosas como '.' o' * ', qué tipo de expresiones regulares es, expresiones regulares extendidas o PCRE regex? – CMCDragonkai

+0

@CMCDragonkai La segunda parte de su pregunta ya está abordada en mi respuesta. Funciona con '.' y' * ', p. 'wget -r --reject-regex". * foobar. * "http: // example.com' descartará' http: // example.com/foobar/'. –

Cuestiones relacionadas