Использование date --date
для вычисления большого числа дат станет очень медленным.
# With date calculations (too) slow, only done for 10 days
d="2015-01-01"
((maxminutes=24*60))
while [ "$d" != "2015-01-10" ]; do
d=$(date -I -d "$d + 1 day")
for ((m=0; m<${maxminutes};m+=15)); do
date -d "${d} + ${m} minutes" +"%Y%m%d%H%M"
done
done
Альтернативой является использование awk, предотвращающее частый вызов другой программы
awk -v startdate="2015-01-01" -v enddate="2015-01-10" 'BEGIN {
printf("%s %s\n", startdate, enddate);
split(startdate,A,"[-]");
T1=mktime(A[1] " " A[2] " " A[3] " 0 0 0");
split(enddate,B,"[-]");
T2=mktime(B[1] " " B[2] " " B[3] " 23 59 59");
while (T1 < T2) {
printf("%s\n", strftime("%Y-%m-%d %H:%M",T1));
T1+=60*15;
}
}'