2012-03-28 4 views
4

ack (инструмент grep написан на Perl) не находит файл, который grep -r находит, и я не могу найти нужные параметры, чтобы заставить его работать. Ниже показано, что ack не нашел целевую строку, которая находится в обычном файле в подкаталоге. Это на Баш оболочки (Ubuntu 11.04):ack не делает рекурсивный grep

100 $ grep -r imbue * 
    hel/find:    the fact that some shells including Bash imbue braces 
    ## Note: grep find it as shown in the above. 

101 $ ./ack-standalone imbue 
    ## Note: ack didn't find it as shown in the above. 

102 $ ./ack-standalone --version 
    ack 1.96 
    Running under Perl 5.10.1 at /usr/bin/perl 

    Copyright 2005-2011 Andy Lester. 

    This program is free software. You may modify or distribute it 
    under the terms of the Artistic License v2.0. 

    ## This is the testing folder structure: 
103 $ tree 
    . 
     ack-standalone 
     hel 
      |- dot 
      |- find 
      |- grep 
      |- jobs 
     perlman 
     perlre 
     perlrequick 
     perlrun 
     perlvar 
     xargs 

    1 directory, 11 files 

Version 2 АСК, от APT-получить установку пакета, получили те же результаты. В автономной версии (версия 1), показанной выше. ack -f ничего не показывает, и я пробовал опции -r и *, все с одинаковыми результатами.

На другой машине Ubuntu 10.04 она работает как шарм.

ответ

8

Это работает для меня, если я выбираю для работы во всех файлах, независимо от его типа, используя -a переключатель (моя версия того же, что у вас):

ack -a imbue * 
+0

с '-a' варианта, это начать Работа. –

+0

Ack 1.x ищет файлы только тех типов, которые он понимает. В принципе, ack ищет только исходный код в файлах, которые он распознает в качестве исходного кода на основе расширения. Это НЕ универсальная замена grep. Кроме того, в примере 'ack -a imbue *' там '*' не следует включать. Вы никогда не хотите указывать имя файла для ack, если у вас нет причины указывать имя файла для ack. –

+0

«Это не универсальная замена grep». В первой строке справочной страницы 'ack' указано:« Ack разработан как замена для 99% использования grep ». – jwg