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.
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.
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 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:
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.
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