Shell: генерируем последовательность дат
Простой случай когда надо сгенерировать последовательность дат. Например для генерации шаблона партиций в бд.
$ seq \
`date -d "2021-02-01 00:00:00" "+%s"` \
86400 \
`date -d "2021-09-01 00:00:00" "+%s"` \
| xargs -I{} date -d @{} +%Y-%m-%d
date -d "<date>" "+%s"
- преобразовать датув секунды; seq <seconds from> 86400 <seconds to>
- добавляем к стартовой дате по 1 дню в секундах;|
- отправляем все на вход другой команде (в данном случае xargs);xargs -I{} <command>
- подставляем каждую строку из входа на место {} в описании команды;date -d @{} +%Y-%m-%d
- преобразуем секунды, которые были подставлены предыдущей командой в дату нужного формата.
$ seq \
`date -d "2021-02-01 00:00:00" "+%s"` \
86400 \
`date -d "2021-02-12 00:00:00" "+%s"` \
| xargs -I{} date -d @{} +%Y-%m-%d
2021-02-01
2021-02-02
2021-02-03
2021-02-04
2021-02-05
2021-02-06
2021-02-07
2021-02-08
2021-02-09
2021-02-10
2021-02-11
2021-02-12
Категории: HowTo