使用 find 和 anacron 清理脚本

使用 find 和 anacron 清理脚本

我想自动删除 ~/Downloads 中的旧文件。但带有 '!' 的除外以他们的名义。我当前的版本如下:

find /home/user/Downloads/ -mtime +90 ! -path '*!*' -delete

当我测试如下*时:

find /home/user/Downloads/ -depth -mtime +90 ! -path '*!*' -print

结果是:

/home/user/Downloads/old.file
/home/user/Downloads

我不希望它删除我的/home/user/Downloads目录,该目录仍包含!protected.old.file

我希望它从 anacron 运行,所以我不确定使用 globing 是否是一个好主意。

*注意,这-depth是暗示的-delete

答案1

如果您只想保护给定的路径find不被删除,请使用-mindepth 1.不过,我会拆分该操作:运行一次,仅删除文件,然后再次运行,这次使用 删除目录rmdir,这只会删除空目录。请注意,删除文件会更改包含目录的访问和修改时间,因此一旦删除旧目录中的任何文件,测试就变得无效。因此,在第二次运行中删除空目录更有可能成功。

相关内容