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 번호, 이메일이미지 유형, 이미지 품질, 이미지 전송 ID,

굵은 버전은 소스 xml에 이러한 필드가 있는 횟수를 반복하므로 ID당 이미지 수가 다를 수 있습니다. 예를 들어 폴더를 만들고 ID를 기반으로 해당 폴더에 이러한 이미지를 다운로드해야 합니다.

some_path/2463666/img483903555766418535.jpg

썸네일과 "www 크기" 이미지 파일도 있지만 kivirealty-original이미지 위치 앞의 필드로 이미지 파일만 필요합니다.

필요한 파일을 구문 분석한 다음 wget해당 파일을 해당 ID로 명명된 폴더로 구문 분석하려면 어떻게 해야 합니까?

샘플 파일은 쉘 스크립트에 의해 생성되며 파일이 완료된 후 이를 수행하려면 코드가 필요합니다.

답변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

관련 정보