Geben Sie wget an, die Teile des URI-Pfads in Ordnern zu spiegeln

393
ComFreek

Ich habe eine Liste von URIs in einer Datei uris.txt:

http://example.com/file1.pdf
http://example.com/file2.pdf
http://example.com/Folder/file3.pdf
http://example.com/Folder/Subfolder/file4.pdf

Die resultierende Verzeichnisstruktur auf meiner Festplatte soll wie folgt aussehen:

| |-file1.pdf |-file2.pdf |-Folder |-file3.pdf |-Subfolder |-file4.pdf 

Mein aktueller Befehl ist: wget -i uris.txt -P downloads

Leider glättet wget alle Verzeichnisse, dh der Dateiname wird durch Verketten des Basisverzeichnisses (von -P in der Befehlszeile angegeben) und des letzten Teils des URI-Pfads festgelegt.

Die Aufrechterhaltung der Verzeichnisstruktur, die ein Server bedient, ist möglich, jedoch nur mit dem rekursiven Modus, der im Gegensatz zu einer bestimmten Liste von URIs nur mit HTML und CSS arbeitet.

0
Sie könnten mit etwas Regex-Fu die Dateiliste in spezifischere Wget-Befehlszeilen konvertieren und dann die Datei ausführen. Neil Smithline vor 8 Jahren 0
@NeilSmithline Ich generiere die Liste tatsächlich mit einem Node.js-Skript, das ich geschrieben habe. Ich hoffte, dass wget einige eingebaute, sofort einsatzbereite Funktionen enthält, einschließlich des Umgangs mit Sonderzeichen, die in Verzeichnisnamen nicht erlaubt / bevorzugt sind. ComFreek vor 8 Jahren 0

2 Antworten auf die Frage

1
meuh

Sie können dies mit den zusätzlichen Optionen erhalten -xoder --force-directoriesoder -nHoder --no-host-directories, um das Hauptverzeichnis von example.com zu vermeiden.

0
Hannu

Lesevorschläge, die die Antwort zukunftssicher machen:

man wget

Suchen Sie nach --no-host-directoriesund--cut-dirs=number

--no-host-verzeichnisse
veranlassen wget zum Erstellen eines Verzeichnisses mit dem Namen "example.com", in das alle Daten eingefügt werden.

--cut-dirs = number Führt
dasselbe für numberUnterverzeichnisse von oben aus.

Korrigieren Sie mich, wenn ich falsch liege, aber tun diese Optionen nicht das Gegenteil, dh reduzieren Sie die Anzahl der Verzeichnisse? Der Aufruf von wget mit den Parametern "--no-host-verzeichniss --cut-dirs = 10" (10 ist ein beliebig gewählter Wert) führt zu keinem Unterschied gegenüber der Ausführung ohne sie. ComFreek vor 8 Jahren 0