查找+删除日期格式的文件

查找+删除日期格式的文件

我们有以下日志

/var/log/sync/manager.log.2018-06-14-00
/var/log/sync/manager.log.2020-01-14-07
/var/log/sync/manager.log.2020-01-14-02
/var/log/sync/manager.log.2020-01-14-03
/var/log/sync/manager.log.2020-01-14-04
/var/log/sync/manager.log.2020-01-14-34
/var/log/sync/manager.log.2020-01-10-06
/var/log/sync/manager.log.2020-01-14-04
/var/log/sync/manager.log.2019-04-14-05
/var/log/sync/manager.log.2020-01-14-06
/var/log/sync/manager.log.2020-01-14-76
/var/log/sync/manager.log.2020-01-14-982

我们要删除日期格式的日志,例如 -2020-01-14-06

我创建了以下内容

find  var/log/sync/  -type f -mmin +60  -regex '.*\.log.*[0-9]$' -delete

但它删除“.log”之后的所有结束号码。

答案1

d='[0123456789]'
LC_ALL=C find /var/log/sync -name "*.log.$d$d$d$d-$d$d-$d$d-$d$d" \
  -type f -mmin +59 -delete

(请注意,-mmin-delete是非标准扩展)。

对于 GNU find,要删除超过 60 分钟的文件,它是-mmin +59( 或\( -mmin 60 -o -mmin +60 \))。

答案2

我认为你的正则表达式不太好。你有.*\日志之后,这意味着日志之后的所有内容都很好,最后是一个数字。它应该是:

find var/log/sync/ -type f -mmin +60 -regextype sed -regex '.*\.log\.[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}-[0-9]\{2,3\}$' -delete

-regextype sed至少在我的计算机上需要启用量化器,例如\{2\}.

相关内容