wget - 使用参数

时间:2015-07-13 14:35:47

标签: sed arguments wget

我有一个URI列表:带有

的uri.txt
category1/image1.jpeg
category1/image32.jpeg
category2/image1.jpeg

依此类推,需要从域example.com下载wget,并附加更改文件名(最后保存)到categoryX-imageY.jpeg

我理解,我应该逐行阅读uri.txt,在每行前加上“http://example.com/”,并在每行中将“/”更改为“ - ”。

我现在拥有的:

  1. 阅读uri.txt [work]
  2. 在每个URI [work]
  3. 前面添加域名
  4. 更改文件名以保存[失败]
  5. 我正试着这样做:

    wget 'http://www.example.com/{}' -O '`sed "s/\//-/" {}`' < uri.txt
    

    但是wget失败了(这取决于我使用的引用符号类型:`或'):

    wget: option requires an argument -- 'O'
    

    sed `s/\//-/` category1/image1.jpeg: No such file or directory
    sed `s/\//-/` category1/image32.jpeg: No such file or directory
    

    你能告诉我,我做错了吗?

2 个答案:

答案 0 :(得分:0)

当我想构建一个要执行的args列表时,我喜欢使用xargs:

 cat uri.txt | sed "s#\(.*\)/\(.*\)#http://example.com/\1/\2 -O \1-\2#" | xargs -I {} wget {}

答案 1 :(得分:0)

我将如何做到这一点:

Update a 
    set LocID = t.newloc
    from data_adj a join
         #tbl t
         on a.LocID = t.oldloc and a.Building = t.building;

换句话说,在执行while read LINE ; do wget "http://example.com/$LINE" -O $(echo $LINE|sed 's=/=-=') done < uri.txt 并使用修改名称保存之前,逐行阅读uri.txt(文本放在$LINE bash变量中)(我使用另一个{{ 1}}分隔符,以避免转义wget并使其更具可读性