55

私のフォルダ構造は次のようになります。

/app
/app/data
...
/app/secondary
/app/secondary/data

/appを含めて再帰的に検索したい/app/data。しかし、私は検索したくありません/app/secondary/data。これは私がこれまでに持っているものです:

ack --ignore-dir=data searchtext
ack --ignore-dir=secondary/data searchtext

最初のコマンドは両方のディレクトリを無視し、2 番目のコマンドはどちらも無視していません。app フォルダー内から、ack コマンドはどのように表示されますか?

4

2 に答える 2

58

古いバージョンの ack では、フォルダー パスではなく、フォルダー名のみを使用できます。バージョン 1.93_02 の時点で、次の機能が追加されました。

1.93_02     Wed Oct  6 21:39:58 CDT 2010
   [ENHANCEMENTS]
   The --ignore-dir option now can ignore entire paths relative
   to your current directory.  Thanks to Nick Hooey.  For example:

       ack --ignore-dir=t/subsystem/test-data

( betterthangrep.com/Changes より)

あなたが持っているバージョンを確認することができます--version

ack --version
于 2012-02-07T02:37:43.310 に答える
23

この回答は、2 より前のバージョンの Ackに関するものです。 Ack >=2 のバージョンについては、この回答を参照してください。

最初のものは両方ともサブディレクトリとして「データ」を持ち、ack はデフォルトでサブディレクトリを検索するため、両方を無視しています。したがって、その名前のサブディレクトリは無視されます。残念ながら、2 番目の方法も機能しません。これは私のために働く:

ack -a searchtext -G '^(?!.*secondary/data.*).*$'

すべてのファイルを検索する -a の代わりに、ack-grep --help=types を参照して、特定のファイル タイプのみを検索します (例: --type=text)。

于 2010-05-09T23:49:55.603 に答える