find命令似乎没有排除指定目录

find命令似乎没有排除指定目录

find命令应该允许排除目录。我尝试了以下命令。

find -name "clang" -not -path "./mnt/*

它仍在搜索目录。我错过了什么?

find -not -path 的输出

答案1

使用-not -path './mnt/*'(或! -path './mnt/*') 不会阻止find下降到mnt目录中,它只是意味着它不会对在其中找到的名称执行任何操作。

find完全忽略目录,请使用-prune

find . -type d -name mnt -prune -o -type f -name clang -print

或者

find . -path ./mnt -prune -o -type f -name clang -print

第一个选择将跳过任何 mnt目录,而第二个将跳过顶级目录。

答案2

使用单引号:

find -name "clang" -not -path './mnt/*'

相关内容