What's the ack syntax to find all files containing foo and also bar?
Asked
Active
Viewed 287 times
1 Answers
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:
ack -l fooproduces a list of the names of files that containfoo.ack -x barsearches the files named on stdin for the expressionbar.
John1024
- 74,655
-
-
1@roaima If no files or directories are given on the command line,
ackdefaults to searching recursively starting with the current directory. This default is similar togrep -r pattern. Your approach. of course, would work also. – John1024 Sep 01 '16 at 22:54 -
1Thank 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.) – Chris Davies Sep 01 '16 at 22:56 -
@roaima Yes, it is similar but different. To make it more like
grep, I have a~/.ackrcfile that contains--no-recurse. (I can, of course, override that on the command line withack -r.) – John1024 Sep 01 '16 at 22:59
ackis (almost) a drop-in replacement forgrep, the answers in How to search files where two different words exist? should work here too. – Chris Davies Sep 01 '16 at 22:40