2016-03-24 9 views
0

kullanarak url'lerin listesinden adı taşıyan dosyaları indirin:wget: Bu gibi bakarak indirmek için ben ses kayıtlarından oluşan bir dosya music.txt var wget

http://somehow/music/hexfilename1.mp3 1.mp3  
http://somehow/music/hexfilename2.mp3 2.mp3 
http://somehow/music/hexfilename3.mp3 3.mp3 
http://somehow/music/hexfilename4.mp3 4.mp3 
Sadece mp3 dosyalarını indirmek ve aynı kaydetmek istediğiniz

belirtilen isimler. Örneğin, http://somehow/music/hexfilename1.mp3'dan indirin, biz 1.mp3 olarak kaydedeceğiz.

cevap

2

Aslında bu kolay bir iştir, fakat 2 durumlar olabilir: sizin music.txt url İlk grup olan ve çıkış dosyası ikinci olmak üzere Cevabınız böyle ise

  1. , o zaman aşağıdaki komutu kullanabilirsiniz: diğer durum için

    IFS="\n" 
    for line in $(cat music.txt) 
    do 
        url=$(echo $line | awk '{ print $1 }') 
        out=$(echo $line | awk '{ print $2 }') 
        wget "$url" -O "$out" 
    done 
    
  2. , sadece çok komut ve basitçe her satırın geçmesi ve wget parametreleri geçirmek için bir for döngü kullanmasını gerek yoktur.

Bu yardımcı olur umarım.

+0

, işe yaramadı. Bunu başlangıçta eklemem gerekiyor: 'IFS = $ '\ n'' – demianh

+1

@demianh Muhtemelen yanılmışım. Bash sadece 'IFS' değişkenine sahipken, FS 'aslında' awk 'den geliyor gibi görünüyor. Teşekkürler! – Chromium

3

Sen read ile while döngü kullanarak değişkenler içine read edebilirsiniz: Benim için

while read a b; do wget -O "$b" "$a"; done < music.txt