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 foo
produces a list of the names of files that containfoo
.ack -x bar
searches the files named on stdin for the expressionbar
.

John1024
- 74,655
-
-
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 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~/.ackrc
file that contains--no-recurse
. (I can, of course, override that on the command line withack -r
.) – John1024 Sep 01 '16 at 22:59
ack
is (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