Подстановочный знак *.h
расширяется вашей оболочкой, и ack принимает в качестве аргументов только отдельные файлы - ему некуда возвращаться.
Чтобы избежать этого, указать подстановочные внутри одинарные или двойные кавычки, но извед, вероятно, не будет признавать его в качестве шаблона: ack "#define" "*.h"
.
Лучшим вариантом является использование --hh
только для включения заголовочных файлов (см. --help type
) Или -G '\.h$'
только для включения файлов, соответствующих указанному регулярному выражению Perl.