ack

Cory Chamblin

ack is a pretty great improvement over grep for programmers. It ignores .git/.svn directories and is language-aware.

By default, it recurses through the current directory, looking at all source code files for a match to the input string. It dutifully reports line numbers and filenames with highlighting.

metaswitch cchamblin$ ack "class BusinessGroup"
api/bigrivertelephone/com/BigRiverTelephone/Metaswitch/BusinessGroup.java
13:public class BusinessGroup extends MetaswitchElement implements WalkableElement{

api/bigrivertelephone/com/BigRiverTelephone/Metaswitch/BusinessGroupLine.java
9:public class BusinessGroupLine extends SubscriberLine{

api/bigrivertelephone/com/BigRiverTelephone/Metaswitch/BusinessGroupLineCallerIDServices.java
9:public class BusinessGroupLineCallerIDServices extends CallerIDServices{

api/bigrivertelephone/com/BigRiverTelephone/Metaswitch/BusinessGroupLineCallForwardingServices.java
11:public class BusinessGroupLineCallForwardingServices extends CallForwardingServices{

api/bigrivertelephone/com/BigRiverTelephone/Metaswitch/BusinessGroupLineFindMeFollowMeRule.java
9:public class BusinessGroupLineFindMeFollowMeRule extends FindMeFollowMeRule{

Installation is available via Homebrew and MacPorts as well as most mainstream package managers, or you can just curl it.

brew install ack