如何在shell脚本中获得超过6个日历日的日期差异

时间:2016-12-02 10:58:28

标签: shell

我正在编写一个删除超过5天的数据的脚本,我创建了一个类似于下面的shell来获取超过5天的日期。但现在是月开始,现在它给了-ve结果。有什么建议可以避免这种情况吗?

提前致谢。

    fi
DD=$(date +%d)
MM=$(date +%m )
YYYY=$(date +%Y)
DM=`expr $DD - 6 `

if [ "$DM" -lt 10 ]; then

此致 拉维

3 个答案:

答案 0 :(得分:1)

正如评论中所提到的,工作的正确工具可能是find,但另一种选择是在几秒钟内完成工作:

now=$(date +%s)
six_days_in_seconds=$(( 60 * 60 * 24 * 6 ))

six_days_ago=$(( now - six_days_in_seconds ))

如果你有GNU日期,那么你可以传递一个字符串而不是自己进行计算:

date --date '6 days ago' +%s

如您所见,这两个选项会产生相同的结果:

printf 'First: %s\nSecond: %s\n' "$(( $(date +%s) - 60 * 60 * 24 * 6 ))" \
                                 "$(date --date '6 days ago' +%s)"
First: 1480159605
Second: 1480159605

答案 1 :(得分:0)

我不知道这是否有帮助,但使用find将删除超过5天的目录中的所有文件

 find /path/to/directory/ -mindepth 1 -mtime +5 -delete

答案 2 :(得分:0)

我使用了以下语法,但效果很好。

day = $(date +%Y.%m.%d -d "6 days ago")