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

Jawaban:


227

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


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


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


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


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

di mana list.txt adalah file daftar Anda


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

1

Tautkan file links.txt

Perintah untuk mengunduh semua tautan file

cat links.txt | wget -i

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.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.