Як вказати місце розташування за допомогою wget?


695

Мені потрібні файли для завантаження в / tmp / cron_test /. Мій код wget є

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

Так чи є якийсь параметр, щоб вказати каталог?


Відповіді:


955

З сторінки керівництва:

-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

41
Опис посібника робить цю опцію важкою для пошуку. Я не думаю про місце, де я хочу зберегти щось як префікс каталогів. Дякую, що поділились!
Ієн Самуель Маклін Старший

7
Крім того, ви можете видалити кореневу папку через --no-host-directoriesабо -nHза посиланням defaultfault.com/questions/354792/…
Alien Life Form

-П ігнорується, якщо використовується вхідний файл із -якими ідеями?
Ян Віхвегер

411

-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саме це мені потрібно.
РОБОТИ

@louisMaddox на сторінках man на моїй машині, префікс за замовчуванням "." (тобто поточний каталог) додавання косої риски до "префіксу каталогу" призведе до подвійної помилки косої риси (тобто, мій / улюблений / dir / префікс //). коса риса.
Тімоті Л. Дж. Стюарт

2
@ TimothyL.J.Stewart Немає помилки подвійного косого кута.
har-wradim

Примітка: -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.

Я завантажуюся з диска найму і в якості ресурсу мав тільки Linux 2.6.1 (імпорт ОС недоступний). Правильний синтаксис, який вирішив мою проблему із завантаженням 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, який, сподіваємось, монтується.


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 файл --output-document = файл

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

1
Це не відповідь, тому що -о варіант помістити завантажений файл у вказаний файл. Але питання "Як помістити файл у папку". І це дублікат існує відповідь
Антон Горбунов
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.