我有一个包含备份文件的文件夹,其名称如下:
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 {} \;
__20_
的文件(晚上的最后一次备份)除外;基于最后修改时间而不是名称的命令也没问题有人可以在第二点帮助我吗?
感谢。
答案 0 :(得分:0)
使用 find
的-name
测试:
find . -type f -name "*.gz" ! -name "*__20_*.gz" -mtime +7 -delete
答案 1 :(得分:0)
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天"的文件。它会根据修改时间删除文件,这可能与年龄大不相同。