[英]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,应该按照以下规则删除文件:
find. -mtime +45 -exec rm {} \\;
解决find. -mtime +45 -exec rm {} \\;
find. -mtime +45 -exec rm {} \\;
__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.