Используйте недокументированную опцию "--invert-file-match" (ack версия в моей системе: 1.96):
$ ack pattern -G 'test|tests' --invert-file-match
Ну, это как-то задокументировано:
$ ack --help|grep invert
-v, --invert-match Invert match: select non-matching lines
--invert-file-match Print/search handle files that do not match -g/-G.
Это не задокументировано в его perldoc.