首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么查找.git目录?

为什么查找.git目录?
EN

Stack Overflow用户
提问于 2013-10-18 22:23:16
回答 4查看 164关注 0票数 0

我有下面的find命令,我惊讶地看到.git目录正在被找到。为什么?

代码语言:javascript
复制
$ find . ! -name '*git*' | grep git 
./.git/hooks
./.git/hooks/commit-msg
./.git/hooks/applypatch-msg.sample
./.git/hooks/prepare-commit-msg.sample
./.git/hooks/pre-applypatch.sample
./.git/hooks/commit-msg.sample
./.git/hooks/post-update.sample
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-10-18 22:36:17

因为“查找”搜索文件,而发现的任何文件的名称中都没有搜索模式(请参阅手册页)。您需要通过-prune开关删除违规目录:

代码语言:javascript
复制
find . -path ./.git -prune -o -not -name '*git*' -print |grep git

请参阅Exclude directory from find . command

在没有-prune的情况下编辑另一个选项(以及更自然的imho):

代码语言:javascript
复制
find . -not -path "*git*" -not -name '*git*' |grep git
票数 2
EN

Stack Overflow用户

发布于 2013-10-18 22:33:16

你只是看到了find的预期行为。-name测试只应用于文件名本身,而不是整个路径。如果您想搜索除.git目录之外的所有内容,可以使用bash(1)extglob选项:

代码语言:javascript
复制
$ shopt -s extglob
$ find !(.git)
票数 1
EN

Stack Overflow用户

发布于 2013-10-18 22:34:15

它找不到那些git文件。相反,它会在./..git/下面找到与模式! -name '*git*'匹配的文件,该模式包含所有在文件名中不包括git的文件(而不是路径名)。

查找-name是关于文件,而不是路径。

尝试-iwholename而不是-name

find . ! -iwholename '*git*'

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19459961

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档