如何创建 cron 来查找并删除 90 天前的目录但忽略 2 个子目录?

如何创建 cron 来查找并删除 90 天前的目录但忽略 2 个子目录?

我拥有的

我当前设置了一个 cron,可以查找并删除 90 天前的目录和文件

我需要的

我希望 crontab 在删除超过 90 天的目录和文件时忽略两个目录

到目前为止我做了什么

此 crontab 删除目录和文件并忽略 dir1,但仍然从 dir2 中删除目录和文件,即使我在第二个 -not -path 中指定了它。

00 4 * * * sudo find /home/*/* -type d -not -path "/home/dir1/*" -not -path "/home/dir2/*" -mtime +90 -exec rm -r "{}" \;
02 4 * * * sudo find /home/*/* -type f -not -path "/home/dir1/*" -not -path "/home/dir2/*" -mtime +90 -exec rm "{}" \;

实际问题

在查找和删除目录/文件时如何忽略两个目录,您是否只需指定 -not -path 两次,因为我无法按照上面的示例使其工作?

答案1

首先,crontab命令字段不是bash。您应该调用bash存储在其他地方的脚本,而不是滥用命令字段。

man find xargs

#!/bin/bash
find /home/*/* -type d \( -name dir1 -o -name dir2 \) -prune -type f -mtime +60 -print0 | \
  xargs -0 -r rm

相关内容