Is there a way to exclude certain folders (and all their subfolders) from searching within Eclipse?
6 Answers
Here is what works for me (I'm using Helios - maybe this way was not available when this question was originally asked?)
- Go to Project -> Properties -> Resource Filters.
- Click Add.
- Choose Filter type: Exclude all
- Choose Applies to: Folders; check All children (recursive).
- In the Attributes, choose Name, Matches,
.svn
(for example).
(Actually, I'm using .*
to filter out .svn, .hg etc. in one go.)
After okay'ing the project properties dialog, these directories won't come up in search any more. In fact, Eclipse is so kind as to automatically update existing search results windows and remove all matches which are now filtered out.
The quick and dirty way:
Right click on a folder, go to properties, and mark a folder as derived. Derived entities are excluded from searching by default. The problem with this approach is that Eclipse "forgets" that the folder is derived if you delete it (either from within Eclipse or externally, followed by refreshing the project tree). Like so often with Eclipse, this is a long-standing bug (10 years in this case) which still applies to the current version (4.6 Neon at the time of writing).
The safe way:
Create a working set including only those entities you want searched and search only within that working set. See Dave Ray's answer for details on this procedure.
I could imagine that marking resources derived might cause problems in other areas. Instead, create a working set with the folders you want to include in the search:
- Open Search dialog (Ctrl + H)
- Change search scope to Working Set
- Click Choose ...
- Click New to create a new Working Set with the what you want searched (or Add All and then remove the ones you want filtered
- Right click on your project
- Select
Properties
- Select
Resource
->Resource filters
- Click
Add filter
- Choose the following settings:
- Exclude all
- Files and folders
- All children (recursive)
- Change
Name
forProject Relative Path
- Fill input text with
(bin$|bin/.*|build/.*|build$)
(replacebin
andbuild
by the names of the folders you want to exclude) - Tick
Regular expression
Hit OK and then Apply.
Disclaimer
This builds on @atzz's answer, which helped me figure this out. However while it did answer the question of how to exclude certain files, it didn't answer the question of how to exclude certain folders.