我尝试了很多方法如何排除。图书馆试图在我的主目录中查找某些内容时的目录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
相应的更改。