我正在编写一个删除超过5天的数据的脚本,我创建了一个类似于下面的shell来获取超过5天的日期。但现在是月开始,现在它给了-ve结果。有什么建议可以避免这种情况吗?
提前致谢。
fi
DD=$(date +%d)
MM=$(date +%m )
YYYY=$(date +%Y)
DM=`expr $DD - 6 `
if [ "$DM" -lt 10 ]; then
此致 拉维
答案 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")