【问题标题】:wget: Download files with filename from list of urls using wgetwget:使用 wget 从 url 列表中下载带有文件名的文件
【发布时间】:2019-12-15 22:52:52
【问题描述】:

我有一个要下载的音频文件 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。

【问题讨论】:

    标签: shell awk wget


    【解决方案1】:

    您可以使用while 循环和read 将它们read 转换为变量:

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

    【讨论】:

      【解决方案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

      希望这会有所帮助。

      【讨论】:

      • 对我来说,那行不通。我需要在开头添加这个:IFS=$'\n'
      • @demianh 我可能错了。似乎 bash 只有IFS 变量,而FS 实际上来自awk。谢谢!
      猜你喜欢
      • 1970-01-01
      • 2015-09-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-30
      相关资源
      最近更新 更多