如何在linux命令中查看指定范围内每天的日期输出

时间:2014-10-02 22:21:02

标签: linux shell

我有这个命令date -d "-0 month -$(($(date +%d)-1)) days" +%Y%m%d,我想知道2014年9月1日到2014年9月30日之间的所有日期,返回的结果将是什么。

如何在不改变系统时钟的情况下模拟这个?

1 个答案:

答案 0 :(得分:3)

您可以再次使用-d date选项。

$ date -d "2014-09-01"
Mon Sep  1 00:00:00 CEST 2014
$ date -d "2014-09-01 + 1 day"
Tue Sep  2 00:00:00 CEST 2014

类似

for i in `seq 0 29`
do
    today=$(date -d "2014-09-01 + $i days" '+%F')
    day=$(date -d "2014-09-01 + $i days" '+%-d')
    date -d "$today -0 month -$(($day - 1)) days" '+%Y%m%d'
done

应该做的伎俩。请注意,我已将格式说明符更改为%-d。否则,shell会将前九个值解释为八进制,这将在08和09中失败。

但是,我不太确定你最终想要实现的目标。如果您只想在当月的第一天打印,

$ date '+%Y%m01'

似乎很多更简单。