如何获得差异日期在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
问候, 拉维
答
正如在评论中提到的,这项工作正确的工具可能是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
答
我不知道这是否有助于但使用find
将删除目录中的所有文件,超过5天的
find /path/to/directory/ -mindepth 1 -mtime +5 -delete
答
我使用了下面的语法,它运行良好。
day = $(date +%Y.%m.%d -d "6 days ago")
你为什么不使用'find'这个? '-mtime',所以工作得很好。 – fedorqui
我怀疑是回答你的问题_real_是在这里:http://*.com/q/20238183/2088135 –