0

What's the ack syntax to find all files containing foo and also bar?

1

1 Answer 1

4

First we need to select the files that contain foo and, from that list of files, selects files that also contain bar. Thus:

ack -l foo | ack -x bar

As you can see, this works in two steps:

  1. ack -l foo produces a list of the names of files that contain foo.

  2. ack -x bar searches the files named on stdin for the expression bar.

4
  • Shouldn't that first bit be ack -l foo * ? Commented Sep 1, 2016 at 22:43
  • 1
    @roaima If no files or directories are given on the command line, ack defaults to searching recursively starting with the current directory. This default is similar to grep -r pattern. Your approach. of course, would work also. Commented Sep 1, 2016 at 22:54
  • 1
    Thank you. It's a new command to me, but the man page seemed to jump on the "it's a drop-in for grep" line. (I'll delete this later. Or maybe you can.) Commented Sep 1, 2016 at 22:56
  • @roaima Yes, it is similar but different. To make it more like grep, I have a ~/.ackrc file that contains --no-recurse. (I can, of course, override that on the command line with ack -r.) Commented Sep 1, 2016 at 22:59

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.