您好,我有这个用于检查备份完整性的 bash 脚本。我需要编辑它,因为当最旧的备份超过 60 天时(因为我们删除了这些备份),我必须让它发出警告。
现在日期是从另一个文件中提取的
OLDEST_DATE=`cat /tmp/B_BACKUP_TMP.out | head -1 | cut -f5,6,8 -d" "`
格式如下:
2018 年 10 月 29 日
但是,当我尝试使用 -mtime +60 时,无法识别此格式
有什么想法我可以如何转换它吗?
谢谢。
答案1
该date
命令在识别代表日期的字符串方面非常灵活。例如:
$ date -d 'Oct 29 2018'
Mon Oct 29 00:00:00 CET 2018
该-d
标志指示date
将给定的日期显示为字符串。
您可以添加+FORMAT
参数以根据需要转换日期。例如:
$ date -d 'Oct 29 2018' '+%Y-%m-%d'
2018-10-29
请参阅man date
您必须设置输出格式的选项。
编辑:
抱歉,我没听懂你提到的-mtime
。你指的是find
过滤器吗?如果是的话,我想你需要知道今天和你的 之间的天数差OLDEST_DATE
。
您可以通过将日期转换为纪元格式(自 1970-01-01 00:00:00 UTC 以来的秒数)来获取它。例如:
$ current="$(date '+%s')"
$ oldest_date_epoch="$(date -d "$OLDEST_DATE" '+%s')"
$ diff_days=$(( ("$current" - "$oldest_date_epoch") / (3600 * 24) ))
请注意,这不是一个通用的解决方案,因为date
听不懂外语。