2012-03-28 10 views
4

ackgrepツールはPerlで書かれています)grep -rが見つかったファイルが見つからず、正しく動作するための正しいオプションが見つかりません。以下は、ackがサブディレクトリの通常のファイルにあるターゲット文字列を見つけられなかったことを示しています。それは(Ubuntuの11.04)Bashシェルの上にあります:ACKの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 

バージョン2、apt-getのパッケージのインストールから、同じ結果を得ました。上記のスタンドアロン版(バージョン1)。 ack -fは何も表示せず、同じ結果を持つ-r*オプションを試しました。

別のマシンでは、Ubuntu 10.04は、魅力的に動作します。

答えて

8

それは私が-aスイッチ(私のバージョンはあなたと同じである)を使用して、関係なく、そのタイプのすべてのファイルで動作するように選択した場合は私の作品: `-a`オプションで

ack -a imbue * 
+0

を、それが開始作業。 –

+0

Ack 1.xは、理解できるタイプのファイルのみを検索します。基本的には、ackは拡張子に基づいてソースコードとして認識するファイル内のソースコードのみを検索します。これは一般的なgrepの置換ではありません。また、 'ack -a imbue *'の例では、 '*'を含めてはいけません。 ackにファイル名を指定する理由がない限り、ackにファイル名を指定することは決してありません。 –

+0

'これは一般的なgrep置換ではありません。 'ack'マニュアルページの最初の行には、" Ackはgrepの99%の使用に代わるものとして設計されています。 " – jwg

関連する問題