如何使“查找”排除它搜索的文件夹?

Ela*_*tan 25 linux shell find

我正在运行以下命令:

find /var/www/html/content/processing -type d -mtime +1 -exec rm -rf {} \;
Run Code Online (Sandbox Code Playgroud)

我想删除文件夹下的所有文件processing夹(永远不要删除处理文件夹)。

该命令processing也在删除文件夹。如何限制脚本删除该文件夹下的文件夹?

slh*_*hck 39

最简单的方法是添加-mindepth 1,这将跳过第一个深度层次结构,从而忽略您的父目录。

此外,你并不需要一个额外的-exec调用rm,您可以delete直接文件夹,如果他们是空的。

find /var/www/html/content/processing -mindepth 1 -type d -mtime +1 -delete
Run Code Online (Sandbox Code Playgroud)

如果它们不为空:

find /var/www/html/content/processing -mindepth 1 -type d -mtime +1 -exec rm -rf {} \;
Run Code Online (Sandbox Code Playgroud)

如果您很懒惰,还可以扩展通配符。由于*默认情况下不包含当前目录(除非dotglob设置),因此您还可以执行以下操作:

find /var/www/html/content/processing/* -type d -mtime +1 -delete
Run Code Online (Sandbox Code Playgroud)

但是,这也不会包括隐藏文件夹,同样是由于该dotglob选项。