如何得到系统日期前3天的日期

scor11 2003-10-21 09:49:23
这是我刚写的备份程序的一段
用系统日期做文件名
CURRENTDIR='dbname.exp'
(date +dbname%y%m%d.tar;echo $CURRENTDIR)|xargs -t tar cvf

现在要求把3天前的文件删掉
不知道该怎么写
系统sco,gawk不能用,awk可以用

急~~~~~~~~
在线等待~~~~~~~~~~~
...全文
53 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
fierygnu 2003-10-22
  • 打赏
  • 举报
回复
to linaxing:
上次我就给了这个答案,不过楼主没有gawk,所以这样不行。

london说的对,应该是+64,写错了(上次的答案给的就是64,但因为是直接用的$TZ+64,所以某些环境不行)。当然这样就会限制在中国使用了。

如果还要精确,那就需要自己折算了。也可以自己写个C程序。还有一个办法就是用date与date -u输出的值的差求出时差(中国就是-8),然后调整TZ,使其可以适用于任何国家。
linaxing 2003-10-22
  • 打赏
  • 举报
回复
awk 'BEGIN { print strftime("%y%m%d %H:%M:%S", systime()-3*24*60*60) }'
linaxing 2003-10-21
  • 打赏
  • 举报
回复
#取得3天前的日期
DATE=`awk 'BEGIN { print strftime("%y%m%d", systime()-3*24*60*60) }'`

#组成文件名
FILEN=dbname${DATE}.tar

#删除该文件
rm -f $FILEN
fierygnu 2003-10-21
  • 打赏
  • 举报
回复
看来上次没有解决。用下面的试试:
TZ="`date +%Z`+72" date +dbname%y%m%d.tar
ecfa 2003-10-21
  • 打赏
  • 举报
回复
建立一个临时文件,然后删掉
比如,今天是10-21
touch 10210000 tmpmark
find -type f -maxdepth 1 -newer tmpmark -exec rm {} \;
rm tmpmark
london 2003-10-21
  • 打赏
  • 举报
回复
to fierygnu(va_list) :
你用TZ的方法好是好,但是+72(即三天)的结果好像只是在格林威治时间的基础上往前拨
3天,而不是在本地时间上往前拨三天,这在某些情况下可能会出错,请看我运行的结果:

$ date
Tue Oct 21 15:21:10 CST 2003
$ TZ="`date +%Z`+72" date
Sat Oct 18 07:21:56 CST 2003

很明显可以看出在日期上确实是提前三天,但是具体到小时,则时间却相差了8个小时,
如果我错开8个小时再运行这条命令,可能结果就不是提前三天了吧?

能不能有种办法可以得到本地系统时间前3天,而且精确到时分秒的呢?

23,110

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧