Combining ack-grep and xargs

Gotta love the command line..

I use ack-grep a lot and really, really like it. Kudos to the author and to the maintainer who takes care of the ubuntu package :-)

Sometimes though I was missing grep‘s --exclude feature that allows me to ignore certain paths while searching.

There are occasions where I e.g. want to see calls to a certain function in the code base but I am not interested in tests. Today I found an (embarrassingly) easy way to get that behaviour using xargs:

$ find . -name \*.py | grep -v tests/ | xargs ack-grep -C 3 -w 'Message\('

The snippet above first accumulates the paths of interests, then filters them and finally lets ack-grep loose on them.

Ta-da! There you go :-)

Advertisement

Tags: , ,

8 Responses to “Combining ack-grep and xargs”

  1. Andy Lester Says:

    Let ack do the searching for the python for you.

    ack –python –ignore-dir=tests/ -C 3 ‘Message\(‘

    I added the –python (and other languages) specifically to avoid the “find . -name” stuff.

  2. muharem Says:

    Oh wow! I totally missed the ‘–ignore-dir’ command line arg :P
    That will do the job in the vast majority of the cases, I agree.

    Thanks for the pointer!

  3. Andy Lester Says:

    Yes, but even better, –python! Or –nopython! Do ack –help-types

  4. Lara A. Ford Says:

    Isn’t ack-grep package a 1:1 copy from Debian?

  5. Overlooked ack-grep option « Muharem Hrnjadovic Says:

    [...] Muharem Hrnjadovic Cool ideas revolving around computers and programming « Combining ack-grep and xargs [...]

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Connecting to %s


Follow

Get every new post delivered to your Inbox.