如果我执行以下操作:
mkdir /tmp/test
sudo mkdir /tmp/test/test2
sudo chmod 700 /tmp/test/test2
cd /tmp/test
我希望find ./ -not -path "*"
确定 test2 匹配非路径规则,这应该将其完全排除在外。但是,我find: ‘./test2’: Permission denied
暗示find
无论规则如何,都试图遍历目录。
如果我使用 sudo 运行命令,则不会列出该目录,这意味着排除规则正在起作用,但会应用于初始搜索的输出,而不是在初始根期间作为探索条件。
我试图实现根文件系统遍历,同时排除某些有问题的目录,例如花费大量时间的网络文件系统挂载,因此我想直接查找而不探索子目录以减少总执行时间。
我怎样才能实现这个目标?
答案1
你需要“修剪”有问题的目录;这指示find
不要尝试处理其内容:
find . -path "*" -prune
更现实的是,
$ find . -name test2 -prune
./test2
这仍然会test2
自行处理,但不会尝试深入其中,因此不会遇到错误。