使用curl下载csv文件列表

使用curl下载csv文件列表

我有一个 JPG url 扩展的 csv。

http://www.example.com/images/[url_extension]

我想使用curl 循环遍历CSV 并在每个扩展名下载jpg。到目前为止,我有以下内容,但我在语法上遇到了困难。任何帮助是极大的赞赏。

#!/bin/bash
file=urlextensions.csv

while read line
do
outfile=$(echo $line | awk 'BEGIN { FS = "/" } ; {print $NF}')
curl -o "$http://www.example.com/images/" "$line" 
done < "$/Users/Me/Documents/urlextensions.csv"

答案1

您的代码中有几个错误:

  1. 您在第 2 行中定义file,但随后不在循环中使用它。
  2. 放在$事物前面将使 shell 尝试替换它,这可能不是您在执行$http或时想要的$/Users
  3. 您在循环中定义outfile,但不使用它。也许你想把它放在-o你的卷曲线上。
  4. curl 的参数-o应该是文件名,但您将 URL 放在那里。
  5. 基本 URL ( http://www.example.com/images) 和您添加到其中的部分需要位于同一参数中,而不是用空格分隔,否则会使 shell 认为它需要两个参数。

所以我最终得到:

#!/bin/bash

filename=./extensions.txt

while read line || [[ -n "$line" ]]; do
    echo downloading $line
    curl -o $line "http://example.com/$line"
done < "$filename"

如果将其放入文件名中read_examp并使其可执行,您可以看到它的工作方式如下:

chicks$ cat extensions.txt 
foo
bar
baz
chicks$ ./read_examp 
foo
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  1270  100  1270    0     0  41794      0 --:--:-- --:--:-- --:--:-- 42333
bar
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  1270  100  1270    0     0  53987      0 --:--:-- --:--:-- --:--:-- 55217
baz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  1270  100  1270    0     0  48366      0 --:--:-- --:--:-- --:--:-- 48846
chicks$ ls -l `cat extensions.txt`
-rw-r--r--  1 chicks  staff  1270 Oct  7 10:01 bar
-rw-r--r--  1 chicks  staff  1270 Oct  7 10:01 baz
-rw-r--r--  1 chicks  staff  1270 Oct  7 10:01 foo

注意:您提到了 CSV,但您的示例代码似乎根本没有处理这个问题。你可以用一些东西来扩展它像这样从 CSV 中提取一个字段,而不是使用整行。

相关内容