ack não recurse ao especificar um padrão de arquivo

3
ack "#define" 

irá recorrer a subdiretórios e encontrar arquivos que contenham #define. Mas eu queria limitar a busca a arquivos * .h, então eu tentei

ack "#define" *.h

e não recurse mais. Os únicos resultados vêm de arquivos no diretório de trabalho.

Versão:

ack 1.96 Running under Perl 5.14.2 at /usr/bin/perl

    
por sashang 30.11.2011 / 01:12

1 resposta

4

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.

    
por 30.11.2011 / 01:23

Tags