I’ve been using the Unix grep
utility for over 20 years but today I learned something new. Mikko Ohtamaa over at Open Source Hacker has a nice post on Power searching using UNIX grep. The post explores some of the enhancements to the GNU version of grep
. These days, even Mac OS X comes with GNU grep
so it’s a worthwhile read.
One of the things you often to do with grep
is to search recursively into subdirectories but the older versions had no way of filtering on file type. Thus, you could say something like
grep -R foo ~/projects
to search through the projects
subtree but there was no way to specify which files you wanted to consider. If there were binary files under the projects
subdirectory you would search them too. Fortunately, GNU grep
has a way around this. If we want to search just C files we would specify something like
grep -R --include="*.c" foo ~/projects
It’s hard to believe that I didn’t know about this after all the time I’ve been using grep
. My only defense is that I learned grep
early on and had little reason to revisit the documentation. In any event, it’s comforting to know that my education is ongoing.