bash – 为什么我的`find`命令给出了与被忽略的目录有关的错误?
我有这个find命令:
find . -type f -not -path '**/.git/**' -not -path '**/node_modules/**' | xargs sed -i '' s/typescript-library-skeleton/xxx/g; 出于某种原因,它给了我这些警告/错误: find: ./.git/objects/3c: No such file or directory find: ./.git/objects/3f: No such file or directory find: ./.git/objects/41: No such file or directory 我甚至尝试过使用: -not -path '**/.git/objects/**' 得到了同样的事情.有人知道为什么find在.git目录中搜索?看起来很奇怪.
GNU find非常聪明,并且在一个简单的实现上支持several optimizations: >它可以翻转-size 512b -name’* .txt’的顺序并首先检查名称,因为查询大小将需要第二个系统调用. 但是,还不够聪明才能意识到-not -path’* /.git / *’意味着如果你找到一个目录.git然后你甚至不需要递归到它,因为里面的所有文件都将失败比赛. 相反,它尽职尽责地递归,找到每个文件并将其与模式匹配,就好像它是一个黑盒子一样. 要明确告诉它完全跳过目录,您可以使用-prune.见How to exclude a directory in find . command (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |