Bash

使用 curl 下載 csv 中的文件列表

  • October 9, 2015

我有一個 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. file在第 2 行定義,但隨後您不在循環中使用它。
  2. $東西放在前面會讓 shell 嘗試替換它,這可能不是你想要的,$http或者$/Users.
  3. outfile在循環中定義,但不使用它。也許你打算把它-o放在你的捲曲線上。
  4. curl的-o參數應該是一個文件名,但是你把 URL 放在那裡。
  5. http://www.example.com/images基本URL(

所以我最終得到:

#!/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 中提取一個欄位,而不是使用整行。

引用自:https://unix.stackexchange.com/questions/234906