根据 csv 文件的 id 将图像下载到文件夹

根据 csv 文件的 id 将图像下载到文件夹

我有一个看起来像这样的 csv 文件(简短的例子,实际上每个 id 有大约 20 个图像)。

2463666;[email protected];yleiskuva;7;kivirealty-original;7;http://d372r717gpt3jp.cloudfront.net/itemimages/realty/original/209.15555/img483903555766418535.jpg;pääkuva;1;kivirealty-original;1;http://d372r717gpt3jp.cloudfront.net/itemimages/realty/original/209.15555/img2055776735947406126.jpg;yleiskuva;9;kivirealty-www;9;http://d372r717gpt3jp.cloudfront.net/itemimages/realty/www/209.15555/img7955434706446319955.jpg
2538034;[email protected];yleiskuva;8;kivirealty-original;8;http://d372r717gpt3jp.cloudfront.net/itemimages/realty/original/209.15555/img3622394024988955125.jpg;yleiskuva;7;kivirealty-original;7;http://d372r717gpt3jp.cloudfront.net/itemimages/realty/original/209.15555/img7456562650934206782.jpg;yleiskuva;7;kivirealty-thumb;7;http://d372r717gpt3jp.cloudfront.net/itemimages/realty/thumb/209.15555/img3483011994211655969.jpg
...

结构是这样的:

身份证号;电子邮件;图像类型;图像顺序;图像质量;图像传输 ID;图像 URL;

粗体版本会重复源 xml 具有这些字段的次数,因此每个 id 可能(很可能)有不同数量的图像。例如,我需要创建一个文件夹并根据 id 将这些图像下载到该文件夹​​中

some_path/2463666/img483903555766418535.jpg

还有缩略图和“www 大小”的图像文件,但我只需要在kivirealty-original图像位置之前作为字段的图像文件。

如何解析我需要的文件,然后将wget这些文件解析到以其 id 命名的文件夹中?

该示例文件是由 shell 脚本生成的,我需要一个代码来在该文件完成后执行此操作。

答案1

while IFS=";" read id a remain
do
    while [ "$remain" ]
    do
        IFS=";" read a b test d i_url remain <<< "$remain"
        if [ "$test" == "kivirealty-original" ]
        then
            if [ ! -d "some_path/$id" ]
            then
                mkdir -p "some_path/$id"
            fi
            wget -nd -P "some_path/$id" "$i_url"
        fi
    done
done < file.csv

答案2

如果一切按预期工作,我将使用 awk 创建命令并将输出通过管道传输到 sh 中。这是一个代码框架(您必须添加所需的 wget 选项)...

awk -F\; '
{
    printf "mkdir -p %s/%s\n", "somepath", $1
    for (i=7; i<=NF; i+=5) {
        printf "wget ... %s ... %s/%s ...\n", $i, "somepath", $1
    }
}
' | sh

相关内容