使用wget从CSV列表中下载图像

时间:2016-03-18 12:38:16

标签: bash csv wget

我有一个包含三列的CSV:object-ID,image-url1,image-url2。我希望能够运行一个bash脚本,为CSV中的每一行执行以下操作:

  1. 使用'object-ID'作为文件夹名称
  2. 创建一个新文件夹
  3. 将两张图片下载到该文件夹​​
  4. 每行重复
  5. 我有这段代码,但需要一些帮助!

    IFS=$'\n';
    for file in `cat <filename.csv>`; do
    echo "Creating folder $object-ID";
    mkdir $object-ID
       echo "Downloading image 1";
       wget $image-url1
       echo "Downloading image 2";
       wget $image-url2
    done
    

3 个答案:

答案 0 :(得分:0)

试试这个:

while IFS=, read objid url1 url2;
do
    echo "Creating folder $objid"
    mkdir -p "$objid"

    # Run in a subshell
    (
        cd "$objid"

        echo "Downloading image 1"
        wget "$url1"

        echo "Downloading image 2"
        wget "$url2";
    )

done < myfile.csv

假设您的CSV使用逗号(,)作为分隔符。这可以通过更改IFS=,循环中的while部分进行调整。

此外,如果$objid中包含正斜杠(/),mkdir -p会将其视为包含子目录的路径并创建所有子目录。如果不合适,您可以/之前的$objid替换mkdir,如下所示:

 objid="${objid//\//_}"

答案 1 :(得分:0)

使用read

while IFS=',' read id image_one image_two; do
  [ ! -d "${id}" ] && mkdir "${id}"
  for img in ${image_one} ${image_two}; do
    printf "Downloading %s" "${img}"
    wget -P "${id}" "${img}"
    echo "---"
  done
done < file.csv

对于每一行:如果目录不存在,则根据id值创建目录,并在创建的目录中检索图像(使用-P的{​​{1}}选项。)

答案 2 :(得分:0)

使用awk

awk -F "," '{
     print "mkdir",$1"; echo wget -P",$1,$2"; echo wget -P",$1,$3
}' filename.csv | bash