Tải tập tin từ danh sách


130

Làm cách nào tôi có thể tải xuống các tệp (được liệt kê trong tệp văn bản) bằng cách sử dụng wgethoặc một số cách tự động khác?

Danh sách tập tin mẫu:

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

Câu trả lời:


227

wget có một cờ tích hợp cho việc này: wget -i your_list Bạn có thể tìm thấy loại điều này bằng cách đọcman wget


@aureianimus nếu tôi muốn bỏ qua link 2 thì thế nào?
alrcal

Giải pháp này đã làm việc cho tôi. Tôi hài lòng với nó tải xuống tuần tự và không song song.
asiby

85

Đưa chúng song song với

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

Theo mặc định, nó sẽ chạy nhiều tiến trình như bạn có lõi, bạn có thể tăng thêm 10 lần nữa nếu bạn thực sự muốn kéo chúng xuống nhanh chóng bằng cách thêm "-j 20" sau khi song song.


1
Tôi cho một người không thể làm cho nó hoạt động. Tôi không thấy bất kỳ Proc nào sinh ra, chuyển đổi tiếng vang cho wget không tạo ra bất cứ điều gì
Jakub Bochenski

Một số ubuntus trước đó có một khiếm khuyết ngớ ngẩn trong không gian này: stackoverflow.com/questions/16448887/
mẹo

2
Lưu ý với 'nó sẽ chạy nhiều quy trình như bạn có lõi' - băng thông mạng có thể sẽ là một yếu tố hạn chế.
Wilf

2
Nó thực sự phụ thuộc. Đối với một số lượng lớn các tệp nhỏ, điều này có thể gần như là một thứ tự cường độ nhanh hơn, vì hầu hết thời gian chuyển là bắt tay / TCP khứ hồi. Ngoài ra, trong trường hợp bạn đang tải xuống từ một số máy chủ nhỏ hơn, đôi khi băng thông trên mỗi kết nối bị hạn chế, do đó, điều này sẽ làm mọi thứ trở nên khó khăn.
meawoppl

2
Điều này khá hữu ích nếu bạn muốn sử dụng danh sách các URL tương đối (ID tài nguyên không có tên máy chủ) với các tên máy chủ khác nhau, ví dụ: cat urlfile | song song --gnu "wget example1.com {}" và mèo urlfile | song song --gnu "wget example2.com {}"
Mauricio Sánchez


9

parallelcó một cờ tích hợp --arg-file( -a) sẽ sử dụng tệp đầu vào làm nguồn, vì vậy bạn có thể tránh cat |. Bạn có thể dùng

parallel --gnu -a urlfile wget

Hoặc đơn giản parallel --gnu wget < urlfile


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

list.txt là tập tin danh sách của bạn


4

Tôi thấy câu trả lời của Florian Diesch.

Tôi đã làm cho nó hoạt động bằng cách bao gồm các tham số bqctrong lệnh.

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

Tất cả các tải xuống bắt đầu song song trong nền.

  • -b: Lý lịch. Đi đến nền ngay sau khi bắt đầu
  • -q: Yên tĩnh. Tắt đầu ra của wget
  • -c: Tiếp tục. Tiếp tục nhận tệp được tải xuống một phần

1

Liên kết tập tin links.txt

Lệnh tải xuống tất cả các tập tin liên kết

cat links.txt | wget -i

3
Điều này không hoạt động. wget -i links.txtlà mệnh lệnh đúng.
Hery

Không, đây không phải là lệnh đúng. Lệnh bên phải là: "cat links.txt | wget -i"
DreamCoder

0

Tôi vừa thử nghiệm điều này:

xargs -a download_file -L1 wget

Nó làm việc cho tôi. Các liên kết bên trong tệp txt phải nằm trong các dòng riêng biệt.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.