从 Eclipse 搜索中排除文件夹

Posted

技术标签:

【中文标题】从 Eclipse 搜索中排除文件夹【英文标题】:Exclude folders from Eclipse search 【发布时间】:2010-10-01 09:16:10 【问题描述】:

有没有办法从 Eclipse 中的搜索中排除某些文件夹(及其所有子文件夹)?

【问题讨论】:

Google 员工:请参阅(atzz 的回答:)***.com/a/6111002/1599699 - 这是您正在寻找的答案,而不是公认的答案。 @Andrew 这是现在公认的答案 全人类的正义! 【参考方案1】:

在 Eclipse 中排除文件夹或文件的搜索

1 Right-click on the file/folder.
3 Click on the "Properties" option.
4 Select the "Resource" option.
5 Place a check next to the "Derived" attribute.

希望是帮助。

【讨论】:

【参考方案2】: 右键单击您的项目 选择Properties 选择Resource -> Resource filters 点击Add filter 选择以下设置: 全部排除 文件和文件夹 所有子级(递归) 将Name 更改为Project Relative Path(bin$|bin/.*|build/.*|build$) 填充输入文本(将binbuild 替换为您要排除的文件夹的名称) 勾选Regular expression

点击确定,然后应用。

免责声明

这建立在@atzz 的回答之上,它帮助我解决了这个问题。但是,虽然它确实回答了如何排除某些文件的问题,但没有回答如何排除某些文件夹的问题。

【讨论】:

【参考方案3】:

快速而肮脏的方式:

右键单击文件夹,转到属性,然后将文件夹标记为派生。默认情况下,派生实体被排除在搜索之外。 这种方法的问题在于,如果您删除文件夹,Eclipse 会“忘记”该文件夹是派生的(从 Eclipse 内部或外部,然后刷新项目树)。就像 Eclipse 一样,这是一个long-standing bug(在这种情况下是 10 年),它仍然适用于当前版本(撰写本文时为 4.6 Neon)。

安全的方式:

创建一个工作集,其中仅包含您要搜索的那些实体,并仅在该工作集中进行搜索。有关此过程的详细信息,请参阅Dave Ray's answer。

【讨论】:

就像戴夫在他的回答中指出的那样:将不是真正派生的东西设置为派生可能会导致问题。就像使用 Maven 创建发行版一样。 在 Juno 中,将文件夹标记为派生不会将其排除在搜索之外。我正在使用 Mac OS,因此可能与此有关,因为我看到许多功能在此 OS 上无法正常工作 在 MS-Windows XP 下的 Juno SR2 上为我工作。让我烦恼的文件夹实际上是派生的(构建文件夹,列出文件有时会导致无数次点击)。 @Instansoup 为什么搜索本身不能排除文件夹?我的意思是,它有“!”性格只是为了这个,不是吗?我不明白为什么它对我不起作用。 创建“仅包含您想要搜索的实体的工作集”并不是一种非常安全的方法。事实上,包含过滤器是非常不安全的。想象一下创建一个新目录或文件,它与被排除的目录或文件是同级的。在这种情况下,您必须记住将其包含在搜索中。如果您忘记了,搜索会出现误报,这可能是危险的,并导致您相信 Eclipse 搜索不可靠。【参考方案4】:

我可以想象,标记资源派生可能会导致其他领域出现问题。相反,使用要包含在搜索中的文件夹创建一个工作集:

打开搜索对话框 (Ctrl + H) 将搜索范围更改为工作集 点击选择... 单击“新建”以使用您想要搜索的内容创建一个新的工作集(或“全部添加”,然后删除您想要过滤的内容

【讨论】:

这也有问题。请参阅上面 Instantsoup 答案下的评论。使用此 INCLUSIVE 过滤器,在某些情况下,当您添加文件或文件夹时,您必须记住将它们包含在搜索中。如果你忘记了,你会得到危险的假阴性。这并不理想。 在 Eclipse Kepler 中,单击 New 后会出现一个“选择工作集类型”对话框。 (值得注意的是,此时要查找所有类型的文件需要选择“资源”。)【参考方案5】:

Eclipse Juno 中最好的快捷方式:

    右键单击文件夹。 转到属性。 转到 C/C++ 构建。 选中“从构建中排除资源”。 点击确定按钮。 右键单击项目。 转到索引。 点击重建。 放松!

【讨论】:

【参考方案6】:

这对我有用(我正在使用 Helios - 也许在最初提出这个问题时这种方式不可用?)

转到项目 -> 属性 -> 资源过滤器。 点击添加。 选择过滤器类型排除所有 选择适用于文件夹;检查所有孩子(递归)。 在“属性”中,选择名称匹配项.svn(例如)。

(其实我是用.*一次性过滤掉.svn、.hg等)

确定项目属性对话框后,这些目录将不再出现在搜索中。事实上,Eclipse 非常友好,可以自动更新现有的搜索结果窗口并删除现在被过滤掉的所有匹配项。

【讨论】:

对于 2011 年最新版本的 Eclipse(Helios & Indigo),这应该是公认的答案,也是最简单的方法。 由于这一次只能应用于一个项目,这实际上并没有超过标记派生文件夹的好处......并且取决于您需要输入过滤器的次数,它可能需要更长。 使用此方法时,请务必在添加资源过滤器后清除您的搜索历史记录(使用搜索面板中的带有向下箭头的手电筒按钮)。否则,您将无法节省任何搜索时间,并且您将收到 .git/.../filename.file doesn't exist 错误,因为搜索缓存(我认为?)仍然认为 .git 文件夹是一个有效的查找位置。 这可行,但会隐藏包资源管理器中的文件。我们可能想要编辑文件,但在搜索结果中看不到它们。 当我尝试时,它可以过滤搜索结果,但我开始收到错误“在项目'Mercadosa-webapp'上运行构建器'AspectJ Builder'时出错。资源已存在于磁盘上:'/MyProject /target/MyProject-1.0/WEB-INF/freemarker/site/file.ftl'。资源已存在于磁盘上:'/MyProject/target/MyProject-1.0/WEB-INF/freemarker/site/file.ftl'。”

以上是关于从 Eclipse 搜索中排除文件夹的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Eclipse 的标记视图中排除文件/文件夹?

如何从 PhpStorm 全局搜索中排除文件 (Ctrl+Shift+F)

在 Eclipse 中从 jslint4java 中排除文件

如何从 git grep 搜索中排除某些目录/文件

搜索时从 Xcode 中排除文件

使用 Querybuilder 从全文搜索父路径中排除子路径或从 XPATH/JCR SQL2 查询中获取搜索命中摘录