我拥有的
我当前设置了一个 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