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

Use wget to download images from a list in CSV

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

  1. 使用 'object-ID' 作为文件夹名称创建一个新文件夹
  2. 将两张图片下载到该文件夹​​
  3. 对每一行重复

我有这段代码,但需要一些帮助!

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

试试这个:

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 使用逗号 (,) 作为分隔符。这可以通过更改 while 循环中的 IFS=, 部分来调整。

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

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

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 值创建目录,并在创建的目录中检索图像(使用 wget-P 选项)。

awk:

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