Projectile is neat, but you don't need anything fancy to grep and find across the project. I just have a single binding to switch to an eshell, and running rgrep or find commands automatically pops up a hyperlinked buffer containing results. Having a shell function to cd to the project root helps too.