Ack is a fantastic (and portable!) replacement for grep. It's aimed at programmers and by default will only search a white-list of known file-extensions so that it will only search the "code" in a directory.

ack looks at your ~/.ackrc file to get any customized "default" settings you want. I use my (user-level) ~/.ackrc to enable some personalized default options, e.g. color-ize output, always use a $PAGER, sort the output by filename, etc. But sometimes I want to have directory-level (or project-level) additional settings, namely to always exclude/ignore certain directories when searching at the project-level. For example, here are the exclusions I want for my Octopress build environment: So, I wrote-up a little ack wrapper script: ack-wrapper. It crawls the directory tree looking for an additional "local" .ackrc file, starting from the current working directory crawling up through any parent directories until we find a .ackrc file (or until we reach either $HOME or /).

(Update 2012-03-10: It looks like Ack v2.0 supports PWD .ackrc files natively, and has some other neat enhancements to boot!)

### Usage

• Grab the latest version of the ack-wrapper script, drop it somewhere in your \$PATH (I like having a ~/bin/ directory), and make sure it's executable (chmod 755 path/to/ack-wrapper).
• Update your .bashrc to alias ack=ack-wrapper, so that running ack ... will first call the wrapper script, search for any "local" .ackrc files, insert any additional options found into the original supplied command-line arguments, and finally call the (real) ack executable.