我想自动删除 ~/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
,这只会删除空目录。请注意,删除文件会更改包含目录的访问和修改时间,因此一旦删除旧目录中的任何文件,测试就变得无效。因此,在第二次运行中删除空目录更有可能成功。