Bash / Shell从CSV文件中的链接下载文件

时间:2017-11-03 11:32:51

标签: bash shell unix

CSV文件有以下格式的2列:

名称;链接由;;

分隔

例如

Product_1;www.example.com/product_1.png,www.example.com/product_2.png;

我正在尝试制作一个while循环,以便它可以下载图像并相应地重命名,但无法弄清楚

//对不起,misexplained我自己,我的意思是说我想下载图片,如果可能的话,在第一列中带有_1,_2等名称

这是我到目前为止所做的事情

#!/usr/bin/env bash
fname="$1"
while IFS=";" read f1 f2
do
  mkdir -p "$f1";
  wget -P "$f1" "$f2"
done < "$fname"

它有效,但只适用于文件,有什么方法可以让我的生活更轻松吗?

1 个答案:

答案 0 :(得分:1)

我相信这就是你想要的。

#!/usr/bin/env bash
fname="$1"

# Loop through each line
while IFS=";" read -r f1 f2 _; do
    # Create directory
    mkdir -p "$f1"
    # Loop through comma separated links
    IFS=, read -r -a items <<< "$f2"
    for i in $items; do

        # Auto sequencing file name
        number=0; suffix="";
        while test -e "$f1/$f1$suffix.png"; do
            (( ++number ))
            suffix=$( printf -- '-%02d' "$number" )
        done
        outname="$f1/$f1$suffix.png"

        # Download file
        wget -P "$f1" -O "$outname" "$i"

    done
done < "$fname"