@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