Jak określić lokalizację za pomocą wget?

695

Potrzebuję plików do pobrania do / tmp / cron_test /. Mój kod wget to

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

Czy jest jakiś parametr określający katalog?

Léo Léopold Hertz 준영
źródło

Odpowiedzi:

955

Ze strony podręcznika:

-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).

Musisz więc dodać -P /tmp/cron_test/(krótki formularz) lub --directory-prefix=/tmp/cron_test/(długi formularz) do swojego polecenia. Pamiętaj również, że jeśli katalog nie istnieje, zostanie utworzony.

RichieHindle
źródło
5
-P / tmp / cron_test / nie działa, ale usunięcie / like -P tmp / cron_test / działa, a nawet tworzy nieistniejący katalog.
Kangarooo,
7
Kangur prawdopodobnie nie działa, ponieważ nie masz / tmp / cron_test / w twoim systemie: P
Sameer Alibhai
41
Opis instrukcji utrudnia wyszukiwanie tej opcji. Nie myślę o lokalizacji, w której chcę zapisać coś jako „prefiks katalogu”. Dzięki za udostępnienie!
Iain Samuel McLean Starszy
7
Możesz także usunąć folder główny za pośrednictwem --no-host-directorieslub -nHna serwerze serverfault.com/questions/354792
Alien Life Form
-P jest ignorowane, jeśli używasz pliku wejściowego z -i jakieś pomysły?
Jan Viehweger
411

-O to opcja określająca ścieżkę do pliku, który chcesz pobrać.

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

-P to przedrostek, w którym pobierze plik z katalogu

wget <file.ext> -P /path/to/folder
RPradeep
źródło
8
Dodałbym końcowy ukośnik, aby się /path/to/folder/tam dostać
Louis Maddox
36
Up głosował za sprecyzowaniem -Otego, czego nie potrzebowałem, ale sprawił, że poczułem większą pewność, że -Ptego właśnie potrzebowałem.
WORMSS
@louisMaddox na stronach podręcznika na moim komputerze, domyślny prefiks to „.” (tj. bieżący katalog) dodanie ukośnika końcowego do „prefiksu katalogu” spowodowałoby błąd podwójnego ukośnika (tj. mój / favourite / dir / prefix //) ponadto, biorąc pod uwagę semantykę, „prefiks katalogu” nie wymagałby końcowego ciąć.
Timothy LJ Stewart
2
@ TimothyL.J.Stewart Nie występuje błąd podwójnego ukośnika.
har-wradim
Uwaga: -Ozastępuje -P, więc nie można podać tylko katalogu wyjściowego (pomyśl dirname i tylko wyjściową nazwę pliku (myśl basename). W tym celu wystarczy -Opodać pełną ścieżkę do pliku.
murlakatamenka
7

Upewnij się, że adres URL jest poprawny dla wszystkiego, co pobierasz. Przede wszystkim adresy URL ze znakami podobnymi ?i takimi nie mogą być analizowane i rozwiązywane. Spowoduje to pomylenie wiersza cmd i zaakceptuje wszelkie znaki, które nie są przetłumaczone na nazwę źródłowego adresu URL jako nazwę pliku, do którego pobierasz.

Na przykład:

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

pobierze do pliku o nazwie, ?source=typ_redirect.

Jak widać, znajomość kilku adresów URL pomaga zrozumieć wget.

Uruchamiam z dysku wypożyczonego i jako źródło miałem tylko Linuksa 2.6.1 (system operacyjny importu jest niedostępny). Prawidłowa składnia, która rozwiązała mój problem z pobraniem ISO na fizyczny dysk twardy, to:

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

Można ustalić prawidłowy adres URL, znajdując punkt, w którym wgetpobiera się plik o nazwie index.html(plik domyślny) i ma prawidłowy rozmiar / inne atrybuty pliku, którego potrzebujesz, pokazując następujące polecenie:

wget "(source url)"

Gdy ten adres URL i plik źródłowy są poprawne i są pobierane do index.html, możesz zatrzymać pobieranie ( ctrl+ z) i zmienić plik wyjściowy, używając:

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

po źródłowym adresie URL.

W moim przypadku powoduje to pobranie pliku ISO i zapisanie go jako pliku binarnego, pod isofile.isoktórym mam nadzieję zamontować.

Compromper
źródło
2

„-P” jest właściwą opcją, czytaj dalej, aby uzyskać więcej powiązanych informacji:

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

Odpowiednie fragmenty stron podręcznika dla wygody:

   -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
źródło
1

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

wget "url" -O /tmp/cron_test/<file>
megamind
źródło
1
To nie jest odpowiedź, ponieważ opcja -o umieści plik wczytany w określonym pliku. Ale pytanie brzmi: „Jak umieścić plik w folderze”. I to jest duplikat istnieje odpowiedź
Anton Gorbunov