首先是获取当前日期:
DATE=$(date +%Y%m%d)
此命令就会将 DATE
赋值为 yyyyMMdd的形式,如20160812,%Y%m%d
就是这个日期的格式,相应的还有 %Y%m
(年月,如 201909),更多的可以自己搜一搜写法。
获取这个日期 N 天后的日期(${DATE}
可以换成任易日期,如 20160812):
DATE_TMP=$(date -d "${DATE} N days" "+%Y%m%d")
获取这个日期 N 前后的日期(${DATE}
可以换成任易日期,如 20160812):
DATE_TMP=$(date -d "${DATE} N days ago" "+%Y%m%d")
举个例子:
获取当前日期 1 天后的日期:
DATE_TMP=$(date -d "${DATE} 1 days" "+%Y%m%d")
获取当前日期 1 天前的日期:
DATE_TMP=$(date -d "${DATE} 1 days ago" "+%Y%m%d")
举一反三:
获取这个日期 N 月后的日期:
DATE_TMP=$(date -d "${DATE} N month" "+%Y%m%d")
获取这个日期 N 月前的日期:
DATE_TMP=$(date -d "${DATE} N month ago" "+%Y%m%d")
获取这个日期 N 年后的日期:
DATE_TMP=$(date -d "${DATE} N year" "+%Y%m%d")
获取这个日期 N 年前的日期:
DATE_TMP=$(date -d "${DATE} N year ago" "+%Y%m%d")
一个简单的处理指定日期 N 天内数据的 Shell 脚本写法:
DATE=$(date +%Y%m%d) for i in {1..5} do DATE_TMP=$(date -d "${DATE} ${i} days ago" "+%Y%m%d") cd /root/backup rm -rf *${DATE_TMP}* done
使用这个脚本,并结合 Linux 的 crontab 命令,就可以轻松实现例如每 N 天将当前日期 5 天内的数据删除。