Завантажте файли зі списку


130

Як я можу завантажувати файли (перелічені в текстовому файлі) за допомогою іншого wgetабо іншого автоматичного способу?

Зразок списку файлів:

www.example.com/1.pdf
www.example.com/2.pdf
www.example.com/3.pdf

Відповіді:


227

wget має вбудований прапор для цього: wget -i your_list Ви можете знайти таку річ, прочитавшиman wget


@aureianimus якщо я хочу пропустити посилання 2, то як?
alhelal

Це рішення працювало на мене. Я був задоволений завантаженням послідовно, а не паралельно.
asiby

85

Отримайте їх паралельно з

cat urlfile | parallel --gnu "wget {}"

За замовчуванням він запустить стільки процесів, скільки у вас є ядер, ви, ймовірно, можете збільшити це ще в 10 разів, якщо ви дійсно хочете швидко їх зняти, додавши "-j 20" після паралельної.


1
Я для одного просто не можу змусити його працювати. Я не бачу жодної програми, що породжується, переключення ехо для wget нічого не видає
Jakub Bochenski

Деякі ранні ubuntus мають тупий дефект в цьому просторі: stackoverflow.com/questions/16448887 / ...
meawoppl

2
Зауважте, що "він запустить стільки процесів, скільки у вас є ядер" - пропускна здатність мережі, швидше за все, буде більш обмежуючим фактором.
Вільф

2
Це дійсно залежить. Для великої кількості невеликих файлів це може бути майже на порядок швидше, оскільки більша частина часу передачі - це зворотне рукостискання / TCP. Крім того, у випадку, коли ви завантажуєте з декількох менших хостів, колись пропускна здатність на з'єднання обмежена, тож це наб'є речей.
meawoppl

2
Це дуже корисно, якщо ви хочете використовувати список відносних URL-адрес (ідентифікатор ресурсу без імен хостів) з різними іменами хостів, наприклад: cat urlfile | паралельна --gnu "wget example1.com {}" та cat urlfile | паралельна --gnu "wget example2.com {}"
Маурісіо Санчес


9

parallelмає вбудований прапор --arg-file( -a), який використовуватиме вхідний файл як джерело, тому ви можете його уникнути cat |. Можна використовувати

parallel --gnu -a urlfile wget

Або просто parallel --gnu wget < urlfile


5
awk '{print "http://" $0;}' list.txt | xargs -l1 wget

де list.txt - ваш список списку


4

Я побачив відповідь Флоріана Діше.

Я змусив його працювати, включивши параметр bqcу команду.

xargs -i wget -bqc 'http://{}' < download.txt

Усі завантаження розпочалися паралельно на задньому плані.

  • -b: Передумови. Перейдіть на фон одразу після початку
  • -q: Спокійно. Вимкніть вихід wget
  • -c: Продовжуйте. Продовжуйте отримувати частково завантажений файл

1

Файл посилання link.txt

Команда для зниження завантаження всіх файлів посилань

cat links.txt | wget -i

3
Це не працює. wget -i links.txt- правильна команда.
Хері

Ні, це не правильна команда. Правильна команда така: "cat links.txt | wget -i"
DreamCoder

0

Я щойно це перевірив:

xargs -a download_file -L1 wget

Це працює для мене. Посилання всередині файлу txt повинні бути в окремих рядках.

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