wget:使用wget从URL列表下载带文件名的文件

时间:2016-03-24 02:48:42

标签: shell awk wget

我有一个带音频的music.txt文件可供下载,如下所示:

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

我只想下载mp3文件,并保存为指定的名称。例如,从http://somehow/music/hexfilename1.mp3下载,我们将保存为1.mp3。

2 个答案:

答案 0 :(得分:5)

您可以使用read循环whileread变为变量:

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

答案 1 :(得分:2)

实际上,这是一项简单的工作,但可能有两种情况:

  1. 如果您的music.txt与答案中的相似,那么url是第一个组,输出文件是第二个,那么您可以使用以下命令:

    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. 对于其他情况,您只需要那么多脚本,只需使用for循环即可通过每一行并将参数传递给wget

  3. 希望这有帮助。