Unterstützt wget oder ein anderer HTTP-Datei-Downloader unter Ubuntu Platzhalter?

Unterstützt wget oder ein anderer HTTP-Datei-Downloader unter Ubuntu Platzhalter?

Ich möchte in der Lage sein, ein Bash-Skript zu schreiben, um meine MediaWiki-Erweiterungen automatisch zu aktualisieren, und ich denke, ich werde diese Website verwendenhttps://extdist.wmflabs.org/dist/extensions/um dies zu tun. Aber wie Sie dort sehen können, hat jeder Tarball-Dateiname eine zufällige (oder so scheint es mir zumindest) Kombination aus Buchstaben und Zahlen nach dem letzten Bindestrich (-). Ich hätte also gerne eine Möglichkeit, nur Dateien mit dieser Art von Namen herunterzuladen, extname-REL1_25*.tar.gzwobei * die Stelle ist, an der das Platzhalterzeichen im Namen eingefügt wird und extnamesich auf den Namen der gewünschten Erweiterung bezieht.

Antwort1

wget Klammererweiterung

Verwenden Sie die Klammererweiterung mit wget, um mehrere Dateien nach einem Muster herunterzuladen.

Beispiel:

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

Das optionale -c Flag setzt den Download fort, wenn er angehalten oder an derselben Stelle unterbrochen wird, an der er gestoppt wurde. Die -cOption ist nützlich, wenn Sie eine große Anzahl von Dateien herunterladen und alle Dateien in einem Stapel ohne Unterbrechungen herunterladen möchten.

wget lädt mehrere Dateien aus einer Liste herunter

Beispiel:

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    

wget rekursive Akzeptieren/Ablehnen-Optionen

Rekursive Akzeptieren/Ablehnen-Optionen
    -A Zugriffsliste --accept Zugriffsliste
    -R Rej-Liste --reject Rej-Liste
        Geben Sie durch Kommas getrennte Listen von Dateinamensuffixen oder Mustern an, um
        akzeptieren oder ablehnen. Beachten Sie, dass bei Verwendung der Platzhalterzeichen *,
        ?, [ oder ] in einem Element von acclist oder rejlist erscheinen, wird es
        als Muster und nicht als Suffix behandelt. In diesem Fall
        müssen Sie das Muster in Anführungszeichen setzen, um zu verhindern, dass Ihre Shell
        davon ab, es zu erweitern, wie in-Eine "*.mp3"oder-Ein '*.mp3'.

Beispiel:

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  

Beide -AOptionen -Rladen alle Dateien herunter und dann löschen die Optionen „Akzeptieren“ und „Ablehnen“ die heruntergeladenen Dateien, die nicht dem Muster entsprechen. Das ist schrecklich ineffizient. Eine schnellere Möglichkeit wäre, den Musterabgleich auf die Datei „list.txt“ anzuwenden, um alle unerwünschten Dateien aus „list.txt“ zu entfernen, bevor irgendetwas heruntergeladen wird.

Angenommen, Sie möchten alle Dateien herunterladen vonhttps://extdist.wmflabs.org/dist/extensions/die die folgenden Bedingungen erfüllen:

  • Version 1.25
  • nur die ausgewählten MediaWiki-Erweiterungen

Vorausgesetzt, Sie haben bereits eine Datei list.txt erstellt, die alle Links inhttps://extdist.wmflabs.org/dist/extensions/, öffnen Sie list.txt in einem Texteditor, der Mustervergleiche unterstützt, und filtern den Inhalt von list.txt, um Zeilen mit der Zeichenfolge 1_25(die sich auf Version 1.25 bezieht) abzugleichen, und filtern diese Ergebnisse dann, um Zeilen mit den ~20 Erweiterungen (die Zahl 20 ist nicht wichtig) abzugleichen, die Sie herunterladen möchten. Schreiben Sie dann die Ergebnisse in eine neue Datei namens new-list.txt (der Dateiname new-list.txt ist nicht wichtig) und laden Sie die mehreren Dateien (in diesem Beispiel ~20 an der Zahl) mit new-list.txt nach der -iOption von wget herunter, URLs aus einer lokalen oder externen Datei zu lesen.

Eine weitere Verbesserung dieser Methode wäre, die Anzahl der zu vergleichenden Erweiterungen zu reduzieren, indem der Inhalt von list.txt gefiltert wird, um Erweiterungen abzugleichen, die Zeichenfolgen enthalten, die mit mehr als einer der gesuchten Erweiterungen übereinstimmen. Wenn die Zeichenfolge beispielsweise mit wikimehreren gesuchten Erweiterungen übereinstimmt, können Sie den Inhalt von list.txt filtern, um wikiein wenig Zeit zu sparen. Inhttps://extdist.wmflabs.org/dist/extensions/Es gibt fünf Links, die sowohl als 1_25auch enthalten wiki, und Sie können alle fünf Links mit zwei Musterübereinstimmungen finden.

Antwort2

Nein, mit Platzhaltern ist das nicht möglich. Aber in dieser Situation funktioniert wget mit rekursivem Download -https://unix.stackexchange.com/questions/25340/download-recursively-with-wget

verwandte Informationen