从“查找”中排除 .Library 目录

从“查找”中排除 .Library 目录

我尝试了很多方法如何排除。图书馆试图在我的主目录中查找某些内容时的目录find,但它无论如何都会打印大量行“没有权限”图书馆目录。

错误

我用它做了须藤和来自,但没有任何帮助。我尝试了 with -prune、 with-not -path和 with grep -v

find . -name "*kate*" ! -path /Users/yves/Library
find . -name "*kate*" -path "*Library*" -prune -o -print
find . -name "*kate*" -not -path "./Library/*"
find . -name "*kate*" | grep -v Library

我错了什么?

答案1

看起来您find不想遍历Library当前工作目录中的目录,在这种情况下,那就是:

find . -path ./Library -prune -o -name '*kate*' -print

如果它是您想要修剪的任何目录Library,而不仅仅是当前工作目录中的目录(在 下.):

find . -name Library -prune -o -name '*kate*' -print

这样做! -path './Library/*'会告诉 find 不要选择路径与该模式匹配的文件,但不会停止find尝试遍历./Library目录及其子目录。影响find遍历目录树方式的唯一谓词是-prune非标准谓词(尽管得到广泛支持)-maxdepth

-depth-delete(以及暗示的非标准-depth)影响遍历的顺序(在它们所在的分支之前离开)并导致-prune无效。-follow,现在已被选项取代-L,也会影响遍历,因为它指示find下降到目录的符号链接。

答案2

您需要以下语法find . -not -path '*/Library' -type f -name '*kate*'。我不知道您是在寻找文件夹还是文件,但您必须进行-type相应的更改。

相关内容