ดาวน์โหลดไฟล์จากรายการ


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
ฉันคนเดียวไม่สามารถทำงานได้ ฉันไม่เห็น proc ใด ๆ กลับกลายเปลี่ยนก้องสำหรับ wget ไม่ได้อะไรเอาท์พุท
ยาคุบบ Bochenski

บางรุ่นก่อนหน้านี้มีข้อบกพร่องใบ้ในพื้นที่นี้: stackoverflow.com/questions/16448887/ …
meawoppl

2
หมายเหตุด้วย 'มันจะทำงานหลาย ๆ กระบวนการตามที่คุณมีแกนประมวลผล' - แบนด์วิดท์เครือข่ายน่าจะเป็นปัจจัย จำกัด มากขึ้น
Wilf

2
มันขึ้นอยู่กับ สำหรับไฟล์ขนาดเล็กจำนวนมากสิ่งนี้อาจเป็นลำดับความสำคัญได้เร็วกว่าเนื่องจากเวลาส่วนใหญ่ในการถ่ายโอนคือ handshake / TCP round trip's นอกจากนี้ในสถานการณ์ที่คุณกำลังดาวน์โหลดจากโฮสต์ขนาดเล็กจำนวนหนึ่งบางครั้งแบนด์วิดท์การเชื่อมต่อจะถูก จำกัด ดังนั้นสิ่งนี้จะกระแทกขึ้น
meawoppl

2
สิ่งนี้มีประโยชน์มากหากคุณต้องการใช้รายการ URL สัมพัทธ์ (ID ทรัพยากรที่ไม่มีชื่อโฮสต์) ที่มีชื่อโฮสต์ต่างกันตัวอย่าง: cat urlfile | ขนาน --gnu "wget example1.com {}" และ cat urlfile | ขนาน --gnu "wget example2.com {}"
Mauricio Sánchez


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

ฉันเห็นคำตอบของ Florian Diesch

ฉันได้มันไปทำงานโดยรวมพารามิเตอร์bqcในคำสั่ง

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

การดาวน์โหลดทั้งหมดเริ่มต้นพร้อมกันในพื้นหลัง

  • -b: พื้นหลัง. ไปที่พื้นหลังทันทีหลังจากเริ่มต้น
  • -qเงียบ ๆ ปิดเอาต์พุตของ wget
  • -c: ดำเนินการต่อ รับไฟล์ที่ดาวน์โหลดมาบางส่วนต่อไป

1

ลิงก์ไฟล์ links.txt

คำสั่งสำหรับดาวน์โหลดไฟล์ลิงก์ทั้งหมด

cat links.txt | wget -i

3
สิ่งนี้ใช้ไม่ได้ wget -i links.txtเป็นคำสั่งที่เหมาะสม
Hery

ไม่มีคำสั่งนี้ไม่ถูกต้อง คำสั่งที่ถูกต้องคือ: "cat links.txt | wget -i"
DreamCoder

0

ฉันเพิ่งทดสอบสิ่งนี้:

xargs -a download_file -L1 wget

มันใช้งานได้สำหรับฉัน ลิงก์ภายในไฟล์ txt ต้องอยู่ในบรรทัดแยกต่างหาก

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.