Imprime todas as datas entre uma duração de tempo
- Eu pegaria sua data1 e data2 e as converteria em carimbos de data / hora
- Então eu investigaria: o que é convertido por 1 hora para o registro de data e hora.
- E escreva um loop para o timestamp (date1) para timestamp (date2)
dentro do loop eu adicionaria o registro de data e hora passo a passo (1 hora), converteria o novo timestamp de volta no formato de data / hora preferido e imprimi-lo até que o loop terminasse. #
#!/bin/bash
# by user85321 @ ask ubuntu
# call: ./script.sh 20120205_16 20120205_16 20120305_18
# STEP 1:
# set userdefined Dateformat to normal
d1=$(echo "" | sed 's/_/ /g')
d2=$(echo "" | sed 's/_/ /g')
# set normalized dates to timestamps
t1=$(date --utc --date "$d1" +%s)
t2=$(date --utc --date "$d2" +%s)
# STEP 2:
# time increment, 1h = 3600 s
h=3600
# STEP 3:
if [ $t2 -gt $t1 ]
then
for i in $(seq $t1 $h $(($t2-$h)))
do
# take this and do what you want to do ;o)
echo $(date --date="@$i" "+%Y%m%d_%H")
done
fi
Meu bash imprime exatamente essa lista, o que você descreveu. Então, está feito. Eu acho que algumas rachaduras fariam mais curto / melhor, mas funciona ...
boa sorte