3

我正在开发一个项目来自动删除超过一天的特定目录。我有以下代码工作:

find Directory/ -type d -name "Directory.To.Delete.*" -mtime +1 -exec rm -rf {} \;

它运行良好并按预期删除目录(和内容),但它总是以错误结束:

查找:无法 chdir 到 Directory/ :没有这样的文件或目录

有没有办法在不遇到此错误的情况下运行此代码?我不明白为什么此代码在删除目录后尝试 chdir。

4

2 回答 2

6

-prune在前面添加-exec;将停止find输入匹配目录:

.... -mtime +1 -prune -exec ...
于 2012-09-12T13:45:29.443 回答
1

在 -type d 之前添加 -depth 也会阻止 find 进入匹配的目录。

# mkdir 1
# mkdir 2
# touch -d yesterday 1
# find . -depth -type d -mtime +0 -exec rm -rf {} \;
# ls
2

从男人找到:

   -prune True;  if  the file is a directory, do not descend into it. If -depth is given, false; no effect.  Because -delete implies -depth, you cannot usefully use -prune and -delete together.
于 2012-09-12T13:49:12.720 回答