O curinga *.h é expandido pelo seu shell , e o ack só recebe arquivos individuais como seus argumentos - ele não tem para onde recorrer.
Para evitar isso, especifique o caractere curinga dentro de aspas simples ou duplas, mas ack provavelmente não o reconhecerá como um caractere curinga: ack "#define" "*.h" .
A melhor opção é usar --hh para incluir apenas arquivos de cabeçalho (consulte --help type ), ou -G '\.h$' para incluir apenas arquivos correspondentes ao regex Perl especificado.