Unduh file dari daftar

130

Bagaimana saya bisa mengunduh file (yang tercantum dalam file teks) menggunakan wgetatau cara otomatis lainnya?

Daftar file sampel:

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

Jawaban:

227

wget memiliki bendera bawaan untuk ini: wget -i your_list Anda dapat menemukan hal semacam ini dengan membacaman wget

aureianimus
sumber
@ aureianimus jika saya ingin melewati tautan 2 lalu bagaimana?
alhelal
Solusi ini berhasil untuk saya. Saya senang dengan itu mengunduh secara berurutan dan tidak secara paralel.
asiby
85

Dapatkan secara paralel

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

Secara default ia akan menjalankan banyak proses seperti yang Anda miliki pada inti, Anda mungkin dapat meningkatkan ini 10x lagi jika Anda benar-benar ingin menariknya dengan cepat dengan menambahkan "-j 20" setelah paralel.

meawoppl
sumber
1
Aku hanya tidak bisa membuatnya bekerja. Saya tidak melihat ada proc yang muncul, gema switching untuk wget tidak menghasilkan apa
Jakub Bochenski
Beberapa ubuntus sebelumnya memiliki cacat bisu di ruang ini: stackoverflow.com/questions/16448887/…
meawoppl
2
Catatan dengan 'itu akan menjalankan banyak proses seperti yang Anda miliki core' - bandwidth jaringan kemungkinan akan menjadi lebih dari faktor pembatas.
Wilf
2
Itu sangat tergantung. Untuk sejumlah besar file kecil ini bisa menjadi urutan besarnya lebih cepat, karena sebagian besar waktu transfer adalah handshake / TCP round trip. Juga dalam situasi di mana Anda mengunduh dari sejumlah host yang lebih kecil, kadang-kadang bandwidth per koneksi terbatas, jadi ini akan meningkatkan segalanya.
meawoppl
2
Ini cukup berguna jika Anda ingin menggunakan daftar URL relatif (ID sumber daya tanpa nama host) dengan nama host yang berbeda, contoh: cat urlfile | parallel --gnu "wget example1.com {}" dan cat urlfile | parallel --gnu "wget example2.com {}"
Mauricio Sánchez
10
xargs -i wget 'http://{}'  < your_list
Florian Diesch
sumber
9

parallelmemiliki tanda bawaan --arg-file( -a) yang akan menggunakan file input sebagai sumber, sehingga Anda dapat menghindari cat |. Anda dapat gunakan

parallel --gnu -a urlfile wget

Atau sederhananya parallel --gnu wget < urlfile

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

di mana list.txt adalah file daftar Anda

flo
sumber
4

Saya melihat jawaban Florian Diesch.

Saya membuatnya bekerja dengan memasukkan parameter bqcdalam perintah.

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

Semua unduhan dimulai secara paralel di latar belakang.

  • -b: Latar Belakang. Pergi ke latar belakang segera setelah memulai
  • -q: Diam. Matikan output wget
  • -c: Lanjutkan. Lanjutkan mendapatkan file yang diunduh sebagian
kehidupan jalanan
sumber
1

Tautkan file links.txt

Perintah untuk mengunduh semua tautan file

cat links.txt | wget -i
DreamCoder
sumber
3
Ini tidak bekerja. wget -i links.txtadalah perintah yang tepat.
Hery
Tidak, ini bukan perintah yang benar. Perintah yang benar adalah ini: "cat links.txt | wget -i"
DreamCoder
0

Saya baru saja menguji ini:

xargs -a download_file -L1 wget

Ini bekerja untuk saya. Tautan di dalam file txt harus terpisah.

Kyle Felipe
sumber