Bash
使用 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"
您的程式碼中有幾個錯誤:
- 您
file
在第 2 行定義,但隨後您不在循環中使用它。- 把
$
東西放在前面會讓 shell 嘗試替換它,這可能不是你想要的,$http
或者$/Users
.- 您
outfile
在循環中定義,但不使用它。也許你打算把它-o
放在你的捲曲線上。- curl的
-o
參數應該是一個文件名,但是你把 URL 放在那裡。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 中提取一個欄位,而不是使用整行。