The grep utility actually has line counting build in, so instead of doing:

shell> grep -R TODO * | wc -l

You could do the following instead:

shell> grep -cR TODO *

Although for some reason I still naturally do the former. :)