如何获得差异日期在shell脚本大于6个日历天

问题描述:

我上的脚本工作删除超过5天的数据旧,我创建了类似下面的壳来获取超过5天以上的日期。但现在是从月开始,现在它正在给结果。任何建议,以避免这一点?如何获得差异日期在shell脚本大于6个日历天

在此先感谢。

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

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

问候, 拉维

+0

你为什么不使用'find'这个? '-mtime',所以工作得很好。 – fedorqui

+1

我怀疑是回答你的问题_real_是在这里:http://*.com/q/20238183/2088135 –

正如在评论中提到的,这项工作正确的工具可能是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 
+0

你也可以说'日期--date“4天前”“+%S”'。 – fedorqui

+0

@fedorqui如果你有GNU日期你可以,是的。编辑包含该选项。 –

+0

我试过最后一个选项,但它在Unix时间发布..我想在日历月的一般日期。 – Ravi

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

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

我使用了下面的语法,它运行良好。

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