What's new in ack 2?

When no selectors are specified, ack 1.x only searches through files that
it can map to a file type. ack 2.x, by constrast, will search through
every regular, non-binary file that is not explicitly ignored via
--ignore-file or --ignore-dir. This is similar to the behavior of the
-a/--all option in ack 1.x.

A more flexible filter system has been added, so that more powerful file types
may be created by the user.

ack now loads multiple ackrc files. You can have a global ackrc as well as one per project.

ack's default filter definitions aren't special; you may tell ack to
completely disregard them if you don't like them.

Because of the change in default search behavior, the -a/--all and
-u/--unrestricted options have been removed. In addition, the
-k/--known-types option was added to cause ack to behave with
the default search behavior of ack 1.x.

The -G option has been removed. Two patterns on the command line was ambiguous. In this command
line:

ack1 -G filepattern -i -w searchpattern

which pattern does -i and -w modify? Now,
with ack 2.0, you can use the new -x to
pipe filenames from one invocation of ack into another.

ack2 -g -i filepattern | ack2 -x -w searchpattern

The --binary option has been removed.

The --skipped option has been removed.

The --text option has been removed.

The --invert-file-match option has been removed. Instead, you may
use -v with -g.