具有否定条件的 find 命令仍然考虑给定目录

具有否定条件的 find 命令仍然考虑给定目录

想要查找除 /home 目录(直接或任何级别的子目录之一)中的文件之外的文件,我运行以下命令:

find / ! -path '/home/*'

但是,我收到带有“权限被拒绝”消息的错误消息,如下所示:

find: '/home/user/here/is/some/file': Permission denied

我不在乎它本身是“权限被拒绝”,我不喜欢的是它甚至试图在那里搜索。

起初我认为这可能是因为 FS 上其他地方有一些符号链接,引用了 /home/user/ 内的目录,但后来我尝试使用 -H 选项,如下所示:

find -H / ! -path '/home/*'

它仍然列出了 /home/* 中的那些文件/目录。

有什么想法,如何纠正这个问题?

答案1

-path针对每个可能的路径评估该组件。它不会缩短搜索 - 你需-prune要这样做

find / -path '/home/*' -prune -o -print

相关内容