J'ai besoin de télécharger un fichier en utilisant wget, mais je ne sais pas exactement quel sera le nom du fichier.
https://foo/bar.1234.tar.gz
Selon la page de manuel , wget vous permet d’activer et de désactiver la navigation lorsque vous traitez avec un site ftp, mais j’ai une URL http.
Comment utiliser un caractère générique avec un wget? J'utilise gnu wget.
Des choses que j'ai essayées.
/usr/local/bin/wget -r "https://foo/bar.*.tar.gz" -P /tmp
Mise à jour
L'utilisation de -A entraîne le téléchargement de tous les fichiers se terminant par .tar.gz sur le serveur.
/usr/local/bin/wget -r "https://foo/" -P /tmp -A "bar.*.tar.gz"
Mise à jour
D'après les réponses, c'est la syntaxe qui a finalement fonctionné.
/usr/local/bin/wget -r -l1 -np "https://foo" -P /tmp -A "bar*.tar.gz"
curl "http://example.com/picture[1-10].jpg" -o "picture#1.jpg"
-e robots=off
paramètre pour ne pas obéir à robots.txt: stackoverflow.com/a/11124664/1097104-nH
et--cut-dirs=<number>
a également été utileRéponses:
Je pense que ces commutateurs feront ce que vous voulez avec
wget
:Exemple
la source
Il y a une bonne raison pour que cela ne fonctionne pas directement avec HTTP: une adresse URL n'est pas un chemin de fichier, bien que son utilisation en
/
tant que délimiteur puisse lui donner l'apparence d'un chemin et qu'elles correspondent parfois. 1Traditionnellement (ou historiquement), les serveurs Web reproduisent souvent les hiérarchies de répertoires (pour certains, comme Apache, par exemple, cela fait partie intégrante) et fournissent même des index de répertoires similaires à ceux d'un système de fichiers. Cependant, rien dans le protocole HTTP ne l’exige.
Ceci est important, parce que si vous voulez appliquer un glob sur disons, tout ce qui est un sous - chemin
http://foo/bar/
, à moins que le serveur fournit un mécanisme pour vous fournir ces (par exemple l'indice précité), il n'y a rien à appliquer le glob à . Il n'y a pas de système de fichiers à rechercher. Par exemple, ce n'est pas parce que vous savez qu'il existe des pageshttp://foo/bar/one.html
ethttp://foo/bar/two.html
que vous pouvez obtenir une liste de fichiers et de sous-répertoires viahttp://foo/bar/
. Il serait complètement dans le protocole pour le serveur de retourner 404 pour cela. Ou il pourrait retourner une liste de fichiers. Ou il pourrait vous envoyer une belle image jpg. Etc.Donc, il n'y a pas de standard ici qui
wget
peut exploiter. AFAICT, wget fonctionne pour refléter une hiérarchie de chemins en examinant activement les liens dans chaque page . En d'autres termes, si vous mettez en miroir, de façon récursive, leshttp://foo/bar/index.html
téléchargementsindex.html
, puis extrayez les liens qui en sont un sous-chemin. 2 Le-A
commutateur est simplement un filtre qui est appliqué dans ce processus.En bref, si vous savez que ces fichiers sont indexés quelque part, vous pouvez commencer par utiliser
-A
. Sinon, vous n'avez pas de chance.1. Bien sûr, une URL FTP est aussi une URL. Cependant, bien que je connaisse mal le protocole FTP, j’imagine que, de par sa nature, il pourrait avoir une forme permettant une suppression transparente.
2. Cela signifie qu’il pourrait y avoir une URL valide
http://foo/bar/alt/whatever/stuff/
qui ne sera pas incluse car elle n’est en aucun cas liée à quoi que ce soit dans l’ensemble des éléments liéshttp://foo/bar/index.html
. Contrairement aux systèmes de fichiers, les serveurs Web ne sont pas obligés de rendre la mise en page de leur contenu transparente, pas plus qu'ils ne doivent le faire de manière intuitivement évidente.la source
La solution '-A pattern' ci-dessus peut ne pas fonctionner avec certaines pages Web. Ceci est mon travail, avec un double wget:
wget
la pagegrep
pour motifwget
les fichiers)Exemple: supposons que ce soit une page de podcast de nouvelles et que je veuille 5 fichiers mp3 du haut de la page:
Le
grep
recherche des liens sans espace entre guillemets doubles://
et contenant mon nom de fichierpattern
.la source
bash
page de manuel. RANDOM Chaque fois que ce paramètre est référencé, un entier aléatoire compris entre 0 et 32767 est généré.