繁体   English   中英

删除文件名早于某些天且名称中没有特定子字符串的文件(Linux)

[英]Delete files older than certain days that not have certain substring in name (Linux)

我有一个包含备份文件的文件夹,其名称如下:

backup_2017_12_01__09_00_01.sql.gz
backup_2017_12_01__10_00_01.sql.gz
...
backup_2017_12_01__19_00_01.sql.gz
backup_2017_12_01__20_00_01.sql.gz

backup_2017_12_02__09_00_01.sql.gz
backup_2017_12_02__10_00_01.sql.gz
...
backup_2017_12_02__19_00_01.sql.gz
backup_2017_12_02__20_00_01.sql.gz

等等。

我有一个cron,应该按照以下规则删除文件:

  1. 删除所有超过45天的文件; find. -mtime +45 -exec rm {} \\;解决find. -mtime +45 -exec rm {} \\; find. -mtime +45 -exec rm {} \\;
  2. 删除所有名称早于7天的文件,但名称中带有字符串__20_文件除外(傍晚的最后一次备份); 基于最后修改时间而不是名称的命令也可以

有人可以帮我第二点吗?

谢谢。

使用find-name测试:

find . -type f -name "*.gz" ! -name "*__20_*.gz" -mtime +7 -delete
find /p/a/t/h \( -mtime +45 -o \( -mtime +5 ! -name '*__20_*' \) \) -delete

如果需要,可以更加明确:

find /p/a/t/h \( -mtime +45 -o \( -mtime +5 -and ! -name '*__20_*' \) \) -delete

请注意,您应该更精确地使用语言。 这不会删除“早于45天”的文件。 它会根据文件的修改时间来删除文件,修改时间可能与时间不同。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM