Как указать местоположение с помощью wget?


698

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

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

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


Ответы:


958

Со страницы руководства:

-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/(длинную форму) к вашей команде. Также обратите внимание, что если каталог не существует, он будет создан.


5
-P / tmp / cron_test / не работает, но удаляет / любит -P tmp / cron_test / работает и даже создает несуществующий каталог.
Кенгуру

7
Кенгуру, вероятно, не работает, потому что у вас нет / tmp / cron_test / в вашей системе: P
Sameer Alibhai

43
Описание руководства затрудняет поиск этой опции. Я не думаю о месте, где я хочу что-то сохранить как «префикс каталога». Спасибо, что поделился!
Иэн Сэмюэль Маклин, старейшина

7
Кроме того, вы можете удалить корневую папку с помощью --no-host-directoriesили -nHв соответствии с serverfault.com/questions/354792/…
Alien Life Form

-P игнорируется, если используется входной файл с -i какие-либо идеи?
Ян Фехвегер

412

-O - ​​это опция для указания пути к файлу, который вы хотите загрузить.

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

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

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

8
Я бы добавил косую черту, чтобы сделать это /path/to/folder/там
Луи Мэддокс

36
Ап также проголосовал за уточнение того, -Oчто мне не нужно, но заставило меня чувствовать себя более уверенно, это -Pбыло то, что мне было нужно.
WORMSS

@louisMaddox для страниц man на моем компьютере, префикс по умолчанию - "." (т. е. текущий каталог) добавление завершающей косой черты в «префикс каталога» приведет к ошибке двойной косой черты (т. е. my / favourite / dir / prefix //), кроме того, учитывая семантику, «префикс каталога» не потребует завершающего слэш.
Тимоти Л.Дж. Стюарт

2
@ TimothyL.J.Stewart Не существует ошибки двойной косой черты.
har-wradim

NB: -Oпереопределяет -P, поэтому вы не можете указать только выходной каталог (думать dirname и просто выводить имя файла (думать basename). Для этого используйте просто -Oуказание полного пути к файлу.
murlakatamenka

7

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

Например:

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

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

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

Я загружаюсь с диска hirens, и в качестве ресурса использовалась только Linux 2.6.1 (import 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"

после ссылки на источник

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


2

«-P» - правильный вариант, пожалуйста, ознакомьтесь с дополнительной информацией:

wget -nd -np -P / dest / dir - рекурсивный http: // url / dir1 / dir2

Соответствующие фрагменты с man-страниц для удобства:

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

1

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

wget "url" -O /tmp/cron_test/<file>

1
Это не ответ, потому что опция -o помещает загруженный файл в указанный файл. Но вопрос «Как положить файл в папку». И это дубликат существует ответ
Антон Горбунов
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.