So laden Sie mehrere XML-Dateien von verschiedenen URLs herunter

So laden Sie mehrere XML-Dateien von verschiedenen URLs herunter

@slhck hat eine nützliche Antwort auf diese ähnliche Frage gegeben.

Herunterladen mehrerer Dateien mit wget und Handhabung von Parametern

Dieser Code wurde bereitgestellt, um URLs aus einer Textdatei zu lesenDateiliste, und führen Sie dann eine Schleife aus, um alle herunterzuladen.

    #!/usr/bin/env bash 
    while read line 
      do   
        wget -c --load-cookies cookies.txt $line -O ${line##*/} 
    done < filelist

 

Da ich mit Shell-Skripten nicht vertraut bin, frage ich mich, ob Sie mehrere XML-Dateien folgendermaßen herunterladen könnten:

  • Erstellen einer einfachen, durch Kommas getrennten TextdateiDateiliste
  • gelesen aus:

Dateiliste

umbenannteDatei.xml, url-01.php
umbenannteAndereDatei.xml, url-02.php
spezifischeDateiUmbenennung.xml, „url-03“
neuerDateiname.xml, „url-04“

  • jede Zeile durchlesen
  • Teilen Sie die Zeile in newfile, remoteFile
  • Und Renn:  

    wget -O newfile remoteFile >/dev/null 2>&1 
    

 

Ist es möglich, dies in einem Shell-Skript zu schreiben? Können Sie ein Beispiel angeben?

Antwort1

Um den Text vor dem Komma zu erhalten, verwenden Sie ${line/,*}.

(Dadurch werden tatsächlich ","*" oderder gesamte Text ab dem Kommamitleerer String- nur den Teil der Zeichenfolge vor dem Komma übrig lassen)

Um den Text nach dem Komma zu erhalten, verwenden Sie ${line/*,}.

Der vollständige Befehl wäre also:

while read line
  do
    wget -O ${line/,*} ${line/*,} >/dev/null 2>&1 
done < filelist

oder in einer Zeile:

while read line; do echo wget -O ${line/,*} ${line/*,} >/dev/null 2>&1; done < filelist

Unter Windows (vorausgesetzt Sie haben wget installiert, vonhttp://gnuwin32.sourceforge.net/packages/wget.htm, und legen Sie Ihren Pfad richtig fest), lautet es:

for /f "delims=, tokens=1*" %a in (filelist) do wget -O %a %b

verwandte Informationen