wget - 使用参数

wget - work with arguments

我有一个 URI 列表:uri.txt 和

category1/image1.jpeg
category1/image32.jpeg
category2/image1.jpeg

等等,并且需要使用 wget 从域 example.com 下载它们,另外将文件名(保存时最终)更改为 categoryX-imageY.jpeg

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

我现在拥有的:

  1. 正在阅读 uri.txt [作品]
  2. 在每个 URI 前面添加域名 [工作]
  3. 更改文件名以保存[失败]

我正在尝试使用:

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

你能告诉我我做错了什么吗?

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

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

我会这样做:

while read LINE ; do
  wget "http://example.com/$LINE" -O $(echo $LINE|sed 's=/=-=')
done < uri.txt

换句话说,在执行wget并使用修改后的名称保存之前,逐行读取uri.txt(文本放在$LINE bash变量中) (我使用另一个 sed 分隔符,以避免转义 / 并使其更具可读性)