如何在Shell Scripting中进行日期计算?

时间:2011-06-20 20:42:49

标签: bash shell date-arithmetic

我有一个shell脚本,每晚运行以备份我的EC2站点数据库和html到S3,当它备份文件夹时,它会将日期附加到它以便于查看。但是我希望它能够在3天之前删除相关的备份文件夹。我如何进行计算以获得3天前的日期?

#!/bin/bash
DATE=`date +%m%d%Y`

s3cmd put -r /var/lib/mysql/mydb/ s3://mybucket/mydb-$DATE/
s3cmd put -r /home/ec2-user/public_html/ s3://mybucket/public_html-$DATE/
s3cmd del -r s3://mybucket/mydb-(date 3 days ago)

3 个答案:

答案 0 :(得分:9)

您可以在日期命令中使用-d标志:

-d, --date=STRING
     display time described by STRING, not 'now'

因此,只需将日期变量更改为:

DATE=`date +%m%d%Y -d "3 days ago"`

答案 1 :(得分:2)

为什么不使用目录的修改时间?然后你可以用find搜索它们。例如:

find backups -maxdepth 1 -mtime 3

答案 2 :(得分:0)

在BSD / Mac上有所不同。您需要使用-v选项:

date -v -3d +%m%d%Y