Как Wget изображения из CSV, добавлять URL-адрес и имена файлов из полей?

У меня есть CSV с 4 полями (id1, id2, id3, filename) следующим образом:

2,2314,78,/image/1289.jpg 1,19825,179,/image/01288.jpg 2,2585,2281,/image/01287.jpg 3,35879,82,/image/01286.jpg 

Существует общая конечная точка URL для изображений, таких как

 http://example.com/assets/?mediafile= 

Последний столбец – это уникальная часть URL-адреса изображения.

Я пытаюсь загрузить каждое изображение, и имя каждого изображения основано на первых трех полях:

id1 всегда 1 цифра
id2 действительно 5 цифр с добавочными нулями (поэтому 2314 должно стать 02314)
id3 действительно 4 цифры (78 становится 0078),

поэтому всего 10-значный код. Поэтому первое имя изображения должно быть 2023140078.jpg

Если бы я загрузил один файл вручную, я бы сделал что-то вроде этого:

 wget -O 2023140078.jpg http://example.com/assets/?mediafile=/image/1289.jpg 

Также, если бы я мог написать какой-то статус или код ошибки в строку или написать журнал ошибок, было бы здорово.

  • Ошибка Wget TLS 1.2
  • загрузить несколько файлов из sourceforge
  • Доступ к каждой строке в .txt-файле, загрузка и переименование ссылок
  • Загрузите список веб-страниц в файл и переименуйте их, чтобы избежать перезаписи?
  • wget - как отклонить строку от загрузки html-страниц
  • Проблема с загрузкой Java JDK с помощью WGET на Ubuntu
  • Загрузите сайт HTTPS только через имя пользователя и пароль с помощью wget?
  • Загрузите файл на сервер?
  • 2 Solutions collect form web for “Как Wget изображения из CSV, добавлять URL-адрес и имена файлов из полей?”

     awk -F, '{printf("%d%.5d%.4d %s\n",$1,$2,$3,$4)}' input.csv | while read newfile filename do wget -O "${newfile}.jpg" http://example.com/assets/?mediafile=${filename} done 

    Вы можете установить IFS в запятую и использовать цикл while для чтения 4 переменных, которые используют файл в качестве входных данных:

     IFS=',' while read c1 c2 c3 c4; do wget -O "$(printf "%d%05d%04d.jpg" "$c1" "$c2" "$c3")" "http://example.com/assets/?mediafile=${c4}" done < file.txt 
    Linux и Unix - лучшая ОС в мире.