Файлы загрузки пакета с датой в имени файла

Я хотел бы записать сценарий Linux для загрузки изображения с веб-сайта с другой датой. Я предполагаю, что мне нужны три цикла для YY, MM и DD. YY должна быть 1974–2017, MM 01–12 и DD 01–31. Как это похоже в маленьком сценарии удара Linux?

1
задан 20 September 2018 в 23:14

1 ответ

Я предполагаю, что один из Ваших файлов https://www.url.com/2017-11-16.png и только изменения даты. Вы могли использовать Расширение Фигурной скобки Bash, чтобы вычислить даты и загрузить файлы в одном выполнении:

wget https://www.url.com/{2016..2017}-{01..02}-{01..02}.png

Однако это не будет работать на очень многие URL как в Вашем случае, потому что существует предел продолжительности терминальной команды. Альтернатива является a for цикл:

for i in {2016..2017}-{01..02}-{01..02}; do
  wget https://www.url.com/$i.png
done

Но Вы все еще получите даты как 31.02.2017 с этим подходом. Чтобы только получить фактические даты, нам нужно date как в этом сценарии, взятом отсюда:

#!/bin/bash
startdate=2017-11-14
enddate=2017-11-16
d=
n=0
until [ "$d" = "$enddate" ]; do  
  d=$(date -d "$startdate + $n days" +%Y-%m-%d)
  wget https://www.url.com/$d.png
  ((n++))
done

Корректироваться startdate и enddate к Вашим точным потребностям. Если необходимо изменить формат даты на, например. 20171116, сделайте так и в тех переменных и в date команда, в этом примере это было бы +%Y%m%d.

6
ответ дан 3 December 2019 в 06:30

Другие вопросы по тегам:

Похожие вопросы: