Great question. I think this should be considered in full, so I will try to make my answer as thorough as possible.
One thing that I do when approaching large projects, which I either inherited or contributed to, automatically generates their sources, UML diagrams and everything that can facilitate various amounts of ADD is found when studying a new project :)
I believe that someone here already mentioned Doxygen, this is a great tool! You should study it and write a small bash script that will automatically generate sources for the developed application in any tree structure that you installed.
One thing that I haven't mentioned is mentioning: BOUML ! This is fantastic and free! It automatically generates reverse UML diagrams from existing sources and supports many languages. I use this as a way to really capture the big picture of what is happening in terms of architecture and design, before I start reading the code.
If you have money, see the Understand for% language-here% section. This is absolutely great and has helped me in many ways when inheriting legacy code.
EDIT:
Try ack (bestthangrep.com), this is a pretty handy script for finding source trees :)
source share