如何迭代从开始日期到结束日期的日期?

时间:2017-02-21 05:10:43

标签: bash date unix

我必须在非常大的日期范围内移动文件(从2014121220170202)。

如何在unix机器上的bash中以%Y%m%d格式迭代所有这些日期?

我正在使用gnu的{​​{1}}版本。

2 个答案:

答案 0 :(得分:3)

对于一种非常低效的做事方式:

for x in {20141212..20170202}
do
date --date="$x" &> /dev/null && whateverCommand "$x"
done

更快捷的方式:

x=0
while :
do
thisDate=`date --date="20141212 $x days" +%Y%m%d`
whateverCommand $thisDate
if [[ $thisDate = 20170202 ]]; then break; fi
((x++))
done

答案 1 :(得分:1)

借助第三方工具(dateutils):

$ dateseq -i %Y%m%d 20141212 20170202 -f %Y%m%d
20141212
20141213
20141214
20141215
20141216
20141217
20141218
20141219
...

-i-f选项是处理您的特定格式所必需的。

免责声明:我是该套餐的作者。