Как указать место загрузки с помощью wget?

Мне нужны файлы для загрузки в / tmp / cron_test /. Мой код wget

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

Так есть ли какой-нибудь параметр для указания каталога?


person Léo Léopold Hertz 준영    schedule 03.07.2009    source источник
comment
Аналогично Unix SE: Загрузить с помощью wget в каталог, отличный от текущего.   -  person kenorb    schedule 12.08.2015
comment
Есть большая вероятность, что люди захотят использовать -x, если они используют -i или --input-files, чтобы принудительно загрузить его в соответствующий локальный каталог, соответствующий каждому шаблону URL.   -  person Andrew    schedule 17.01.2021


Ответы (5)


На странице руководства:

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

Поэтому вам нужно добавить -P /tmp/cron_test/ (короткая форма) или --directory-prefix=/tmp/cron_test/ (длинная форма) к вашей команде. Также обратите внимание, что если каталог не существует, он будет создан.

person RichieHindle    schedule 03.07.2009
comment
-P / tmp / cron_test / не работает, но удаление / like -P tmp / cron_test / работает и даже создает несуществующий каталог. - person Kangarooo; 25.10.2012
comment
Кенгуру, вероятно, не работает, потому что в вашей системе нет / tmp / cron_test /: P - person Sameer Alibhai; 29.09.2013
comment
Описание в руководстве затрудняет поиск этой опции. Я не думаю о месте, где я хочу что-то сохранить, как о «префиксе каталога». Спасибо, что поделился! - person Iain Samuel McLean Elder; 07.03.2014
comment
Кроме того, вы можете удалить корневую папку с помощью --no-host-directories или -nH в соответствии с serverfault.com/questions/354792/ - person Alien Life Form; 01.07.2015
comment
-P игнорируется при использовании входного файла с -i any idea? - person Jan Viehweger; 23.02.2017
comment
извините - моя вина. пропущен ^ в конце инструкции многострочного командного файла. - person Jan Viehweger; 23.02.2017
comment
Что ж, опция -P у меня не работает (18.04), по крайней мере, не с опцией -O. Есть ли еще какие-то детали, на которые мне нужно обратить внимание? - person artu-hnrq; 17.12.2019
comment
Ответ askubuntu устанавливает новое значение по умолчанию (с псевдонимом в .bashrc) без необходимости каждый раз вводить команду: как изменить каталог по умолчанию wget - person nilon; 15.04.2020
comment
@JanViehweger См. wget -x, что заставляет его загружаться в соответствующий локальный каталог, соответствующий каждому шаблону URL, если вы используете -i или --input-files. - person Andrew; 17.01.2021
comment
@ artu-hnrq -P не работает с -O, потому что -O сохраняется в ФАЙЛ (см. wget --help, где это описано. Вы не можете сохранить wget URI как каталог и файл одновременно. - person SentientFlesh; 13.03.2021

-O - это возможность указать путь к файлу, в который вы хотите загрузить:

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

-P - это префикс, по которому он будет загружать файл в каталог:

wget <uri> -P /path/to/folder
person RPradeep    schedule 28.07.2015
comment
Я бы добавил косую черту в конце, чтобы /path/to/folder/ там - person Louis Maddox; 01.03.2016
comment
Up проголосовал за то, чтобы указать -O, который мне не нужен, но заставил меня почувствовать себя увереннее, что -P - это то, что мне нужно. - person WORMSS; 29.03.2016
comment
@louisMaddox согласно страницам руководства на моей машине, префикс по умолчанию -. (т. е. текущий каталог) добавление завершающей косой черты к префиксу каталога вызовет ошибку двойной косой черты (например, my / favourite / dir / prefix //), кроме того, учитывая семантику, префикс каталога не потребует завершающей косой черты. - person Timothy L.J. Stewart; 08.04.2017
comment
@ TimothyL.J.Stewart Нет двойной косой черты. - person alephreish; 16.08.2017
comment
NB: -O переопределяет -P, поэтому вы не можете указать только выходной каталог (подумайте dirname и просто имя файла вывода (подумайте basename). Для этого используйте только -O, указав полный путь к файлу. - person murlakatamenka; 06.04.2020

Убедитесь, что у вас правильный URL для того, что вы загружаете. Прежде всего, URL-адреса с такими символами, как ?, не могут быть проанализированы и разрешены. Это запутает строку cmd и примет любые символы, которые не разрешены в имени исходного URL-адреса, в качестве имени файла, в который вы загружаете.

Например:

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

будет загружен в файл с именем ?source=typ_redirect.

Как видите, кое-что об URL-адресах помогает понять wget.

Я загружаюсь с диска Hairns и в качестве ресурса использовал только Linux 2.6.1 (импорт os недоступен). Правильный синтаксис, решивший мою проблему с загрузкой ISO на физический жесткий диск, был:

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

Можно определить правильный URL-адрес, определив, в какой момент wget загружается в файл с именем index.html (файл по умолчанию) и имеет правильный размер / другие атрибуты файла, который вам нужен, с помощью следующей команды:

wget "(source url)"

Как только этот URL-адрес и исходный файл верны и он загружается в index.html, вы можете остановить загрузку (ctrl + z) и изменить выходной файл, используя:

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

после URL-адреса источника.

В моем случае это приводит к загрузке ISO и сохранению его в виде двоичного файла в isofile.iso, который, надеюсь, монтируется.

person Compromper    schedule 25.01.2016

"-P" - правильный вариант, пожалуйста, прочтите дополнительную информацию:

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

Соответствующие отрывки из справочных страниц для удобства:

   -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.
person pr-pal    schedule 07.09.2019

человек wget: -O файл --output-document = файл

wget "url" -O /tmp/cron_test/<file>
person megamind    schedule 11.01.2018
comment
Это не ответ, потому что опция -o помещает загруженный файл в указанный файл. Но вопрос в том, как поместить файл в папку. И это дубликат существует ответ - person Anton Gorbunov; 11.01.2018