C'è una buona ragione per cui questo non può funzionare direttamente con HTTP, ed è che un URL non è un percorso di file, sebbene l'uso di /
come delimitatore possa farlo sembrare come uno, e talvolta corrispondono. 1
Convenzionalmente (o, storicamente), i web server spesso eseguono gerarchie di directory mirror (per alcuni - ad esempio Apache - questo è una specie di integrale) e forniscono persino indici di directory molto simili a un filesystem. Tuttavia, nulla del protocollo HTTP lo richiede.
Questo è significativo, perché se si desidera applicare un glob sul dire, tutto ciò che è un sottotracciato di http://foo/bar/
, a meno che il server fornisce un meccanismo per fornire con tale (ad esempio, l'indice di cui sopra), non c'è niente da applicare il glob a . Non esiste un file system lì per la ricerca. Ad esempio, solo perché sai che ci sono pagine http://foo/bar/one.html
e http://foo/bar/two.html
non significa che puoi ottenere un elenco di file e sottodirectory tramite http://foo/bar/
. Sarebbe completamente entro il protocollo per il server restituire 404 per quello. Oppure potrebbe restituire un elenco di file. Oppure potrebbe inviarti una bella foto jpg. Eccetera.
Quindi non esiste uno standard qui che wget
può essere sfruttato. AFAICT, wget lavora per rispecchiare una gerarchia di percorsi esaminando attivamente i collegamenti in ogni pagina . In altre parole, se esegui il mirroring ricorsivo http://foo/bar/index.html
, scarica index.html
e quindi estrae i collegamenti che ne sono un sottotraccia. 2 L' -A
interruttore è semplicemente un filtro che viene applicato in questo processo.
In breve, se sai che questi file sono indicizzati da qualche parte, puoi iniziare con quello usando -A
. Altrimenti, sei sfortunato.
1. Naturalmente anche un URL FTP è un URL. Tuttavia, anche se non so molto del protocollo FTP, suppongo in base alla sua natura che potrebbe essere di una forma che consente un globbing trasparente.
2. Ciò significa che potrebbe esserci un URL valido http://foo/bar/alt/whatever/stuff/
che non verrà incluso in quanto non è in alcun modo collegato a nulla dell'insieme di cose a cui è collegato http://foo/bar/index.html
. A differenza dei filesystem, i web server non sono obbligati a rendere trasparente il layout del loro contenuto, né devono farlo in modo intuitivamente ovvio.
curl "http://example.com/picture[1-10].jpg" -o "picture#1.jpg"