web-dev-qa-db-fra.com

Est-ce que wget ou tout autre téléchargeur de fichiers http sur Ubuntu prend en charge les caractères génériques?

Je voudrais pouvoir écrire un script bash pour mettre à jour automatiquement mes extensions MediaWiki et je pense que j'utiliserai ce site Web https://extdist.wmflabs.org/dist/extensions/ pour le faire. Mais comme vous pouvez le voir, chaque nom de fichier tarball a une combinaison aléatoire (ou il me semble) de lettres et de chiffres après le tiret final (-). Donc, ce que je voudrais, c'est un moyen de télécharger uniquement les fichiers avec ce genre de nom extname-REL1_25*.tar.gz où * est l'endroit où le caractère générique du nom entrerait et extname fait référence au nom de l'extension que je veux.

1
BH2017

expansion de l'accolade wget

Utilisez l'extension d'accolade avec wget pour télécharger plusieurs fichiers selon un modèle.

Exemple:

wget -c https://extdist.wmflabs.org/dist/extensions/GoogleDocTag-REL1_{22-45203b7,23-249c6f2,24-3186a71,25-10e101f}.tar.gz

L'indicateur facultatif -c Continue le téléchargement s'il est suspendu ou interrompu au même point où il a été arrêté. L'option -c Est utile lorsque vous téléchargez un grand nombre de fichiers et que vous souhaitez télécharger tous les fichiers d'un lot sans interruption.

wget télécharger plusieurs fichiers à partir d'une liste

Exemple:

lynx -dump "https://extdist.wmflabs.org/dist/skins/" | awk '/http/{print $2}' | uniq >> list.txt  
wget -c -E -H -k -K -p -e robots=off -i ./list.txt    

options d'acceptation/rejet récursives wget

Options récursives d'acceptation/de rejet 
 -A acclist --accept acclist 
 -R rejlist --reject rejlist 
 Spécifiez des listes séparées par des virgules de suffixes de nom de fichier ou de modèles à 
 accepter ou refuser. Notez que si l'un des caractères génériques, *, 
?, [Ou], apparaît dans un élément de acclist ou rejlist, il sera 
 Traité comme un motif plutôt que comme un suffixe. Dans ce cas, vous 
 Devez mettre le motif entre guillemets pour empêcher votre Shell 
 De le développer, comme dans -A "* .mp3" ou -A '* .mp3'.

Exemple:

lynx -dump "https://extdist.wmflabs.org/dist/skins/" | awk '/http/{print $2}' | uniq >> list.txt  
wget -c -A "Vector*.tar.gz" -E -H -k -K -p -e robots=off -i ./list.txt  

Les options -A Et -R Téléchargent tous les fichiers, puis les options d'acceptation et de rejet suppriment les fichiers téléchargés qui ne correspondent pas au modèle. C'est horriblement inefficace. Une façon plus rapide de le faire serait de faire la correspondance de motifs sur le fichier list.txt pour supprimer tous les fichiers indésirables de list.txt avant de télécharger quoi que ce soit.

Supposons que vous souhaitiez télécharger tous les fichiers de https://extdist.wmflabs.org/dist/extensions/ qui remplissent les conditions suivantes:

  • version 1.25
  • seules les extensions MediaWiki sélectionnées

En supposant que vous avez déjà créé un fichier list.txt qui contient tous les liens dans https://extdist.wmflabs.org/dist/extensions/ , vous ouvrez list.txt dans un éditeur de texte qui prend en charge filtrer le contenu de list.txt et filtrer le contenu pour faire correspondre les lignes ayant la chaîne 1_25 (qui fait référence à la version 1.25), puis filtrer ces résultats pour faire correspondre les lignes ayant les extensions ~ 20 (le nombre 20 n'est pas important) que vous souhaitez télécharger. Ensuite, écrivez les résultats dans un nouveau fichier appelé new-list.txt (le nom de fichier new-list.txt n'est pas important) et téléchargez les fichiers multiples (~ 20 au nombre dans cet exemple) en utilisant new-list.txt après le [wget's -i Option pour lire les URL à partir d'un fichier local ou externe.

Une autre amélioration de cette méthode serait de réduire le nombre d'extensions à mettre en correspondance en filtrant le contenu de list.txt pour faire correspondre les extensions contenant des chaînes qui correspondent à plus d'une extension que vous recherchez. Par exemple, si la chaîne wiki correspond à plusieurs extensions que vous recherchez, vous pouvez filtrer le contenu de list.txt pour correspondre à wiki et gagner un peu de temps. Dans https://extdist.wmflabs.org/dist/extensions/ il y a cinq liens qui contiennent à la fois 1_25 Et wiki et vous pouvez trouver les cinq liens avec deux correspondances de motifs.

2
karel

Non, c'est impossible avec des caractères génériques. Mais dans cette situation, wget fonctionnera avec le téléchargement récursif - https://unix.stackexchange.com/questions/25340/download-recursively-with-wget

0
Krzysztof Sawicki