Wie kann man den Ort mit wget angeben?

694

Ich benötige Dateien zum Herunterladen nach / tmp / cron_test /. Mein Wget-Code ist

wget --random-wait -r -p -nd -e robots=off -A".pdf" -U mozilla http://math.stanford.edu/undergrad/

Gibt es also einen Parameter, um das Verzeichnis anzugeben?

Léo Léopold Hertz 준영
quelle

Antworten:

954

Von der Handbuchseite:

-P prefix
--directory-prefix=prefix
           Set directory prefix to prefix.  The directory prefix is the
           directory where all other files and sub-directories will be
           saved to, i.e. the top of the retrieval tree.  The default
           is . (the current directory).

Sie müssen also Ihrem Befehl -P /tmp/cron_test/(Kurzform) oder --directory-prefix=/tmp/cron_test/(Langform) hinzufügen . Beachten Sie auch, dass das Verzeichnis erstellt wird, wenn es nicht vorhanden ist.

RichieHindle
quelle
5
-P / tmp / cron_test / funktioniert nicht, aber das Entfernen von / like -P tmp / cron_test / funktioniert und erstellt sogar ein nicht vorhandenes Verzeichnis.
Kangarooo
7
Känguru es funktioniert wahrscheinlich nicht, weil Sie nicht / tmp / cron_test / auf Ihrem System haben: P
Sameer Alibhai
41
Die Beschreibung des Handbuchs macht es schwierig, nach dieser Option zu suchen. Ich denke nicht an den Ort, an dem ich etwas als 'Verzeichnispräfix' speichern möchte. Danke für das Teilen!
Iain Samuel McLean Elder
7
Sie können den Stammordner auch über --no-host-directoriesoder -nHgemäß serverfault.com/questions/354792/…
Alien Life Form
-P wird ignoriert, wenn eine Eingabedatei mit -i Ideen verwendet wird?
Jan Viehweger
409

-O ist die Option, um den Pfad der Datei anzugeben, in die Sie herunterladen möchten.

wget <file.ext> -O /path/to/folder/file.ext

-P ist das Präfix, mit dem die Datei im Verzeichnis heruntergeladen wird

wget <file.ext> -P /path/to/folder
RPradeep
quelle
8
Ich würde einen abschließenden Schrägstrich hinzufügen, um es /path/to/folder/dort zu schaffen
Louis Maddox
35
Up stimmte dafür, auch anzugeben, -Owas ich nicht brauchte, aber ich fühlte mich sicherer, dass -Pes das war, was ich brauchte.
WORMSS
@louisMaddox Laut den Manpages auf meinem Computer lautet das Standardpräfix "." (dh das aktuelle Verzeichnis) Das Hinzufügen eines abschließenden Schrägstrichs zu "Verzeichnispräfix" würde außerdem einen doppelten Schrägstrichfehler (dh mein / Favorit / Verzeichnis / Präfix //) verursachen. In Anbetracht der Semantik würde "Verzeichnispräfix" keinen abschließenden Schrägstrich erfordern Schrägstrich.
Timothy LJ Stewart
2
@ TimothyL.J.Stewart Es gibt keinen doppelten Schrägstrichfehler.
Har-Wradim
NB: -OÜberschreibungen -P, daher können Sie nicht nur das Ausgabeverzeichnis angeben (think dirname und nur den Dateinamen ausgeben (think basename). Verwenden Sie dazu nur den -Ovollständigen Dateipfad.
murlakatamenka
7

Stellen Sie sicher, dass Sie die richtige URL für alles haben, was Sie herunterladen. Erstens können URLs mit Zeichen wie ?und so nicht analysiert und aufgelöst werden. Dies verwirrt die cmd-Zeile und akzeptiert alle Zeichen, die nicht in den Quell-URL-Namen aufgelöst wurden, als den Dateinamen, in den Sie herunterladen.

Zum Beispiel:

wget "sourceforge.net/projects/ebosse/files/latest/download?source=typ_redirect"

wird in eine Datei mit dem Namen , ?source=typ_redirect.

Wie Sie sehen können, hilft es, ein oder zwei Dinge über URLs zu wissen wget.

Ich boote von einer Hirens-Festplatte und hatte nur Linux 2.6.1 als Ressource (Import-Betriebssystem ist nicht verfügbar). Die richtige Syntax, die mein Problem beim Herunterladen einer ISO auf die physische Festplatte löste, war:

wget "(source url)" -O (directory where HD was mounted)/isofile.iso" 

Sie können die richtige URL ermitteln, indem Sie herausfinden, an welcher Stelle wgetin eine Datei mit dem Namen index.html(die Standarddatei) heruntergeladen wird , und die richtige Größe / andere Attribute der benötigten Datei mit dem folgenden Befehl anzeigen:

wget "(source url)"

Sobald diese URL und Quelldatei korrekt sind und in sie heruntergeladen werden index.html, können Sie den Download stoppen ( ctrl+ z) und die Ausgabedatei ändern, indem Sie Folgendes verwenden:

-O "<specified download directory>/filename.extension"

nach der Quell-URL.

In meinem Fall führt dies dazu, dass eine ISO heruntergeladen und als Binärdatei unter gespeichert wird isofile.iso, die hoffentlich bereitgestellt wird.

Kompromissierer
quelle
2

"-P" ist die richtige Option. Bitte lesen Sie weiter, um weitere Informationen zu erhalten:

wget -nd -np -P / dest / dir --rekursives http: // url / dir1 / dir2

Relevante Ausschnitte aus Manpages zur Vereinfachung:

   -P prefix
   --directory-prefix=prefix
       Set directory prefix to prefix.  The directory prefix is the directory where all other files and subdirectories will be saved to, i.e. the top of the retrieval tree.  The default is . (the current directory).

   -nd
   --no-directories
       Do not create a hierarchy of directories when retrieving recursively.  With this option turned on, all files will get saved to the current directory, without clobbering (if a name shows up more than once, the
       filenames will get extensions .n).


   -np
   --no-parent
       Do not ever ascend to the parent directory when retrieving recursively.  This is a useful option, since it guarantees that only the files below a certain hierarchy will be downloaded.
pr-pal
quelle
1

man wget: -O Datei --output-document = Datei

wget "url" -O /tmp/cron_test/<file>
Megamind
quelle
1
Dies ist keine Antwort, da die Option -o die nicht geladene Datei in die angegebene Datei einfügt. Die Frage lautet jedoch "Wie wird eine Datei in einen Ordner gelegt?". Und dies ist doppelt vorhanden Antwort
Anton Gorbunov