ackを使用してすべてのファイルを検索する

ackを使用してすべてのファイルを検索する

どうやって検索できますか?みんな現在のディレクトリにv2を含むackファイル(バイナリを含む)?

私はdoと同じことをしたいのですが、ack 'foo' **フラグを使用して**


ack 'foo'ack 'foo' **違いは次のとおりです。

$ mkdir test && cd test
$ printf '\x00\x01foo1\x00' > test1
$ printf 'foo2' > test2
$ ack 'foo'
test2
1:foo2
$ ack 'foo' **
test1
1:foo1

test2
1:foo2

答え1

ファイル名を解決しないと、認識できないバイナリを除く組み込みのデフォルトのファイルセットで機能します。ファイル名を渡すと、渡したすべてのファイルが検索されます。これack fooとの違いを説明しますack foo **

確認1

ack 1.xでは、このフラグを使用して、-aackが認識しない種類のファイルをスキップしないように指示します。

このフラグが頻繁に必要な場合は、別名を作成できます。またはalias ack='ack -a'~/.bashrcこの行を追加してください~/.zshrc。このエイリアスを設定してackこのオプションなしで呼び出すには、次のように呼び出します\ack(バックスラッシュはエイリアス拡張を無効にします)。スクリプトはエイリアスの影響を受けず、インタラクティブシェルのみが影響を受けます。

または、-aこのオプションを~/.ackrc

バイナリの一致は「Binary test1 match」と表示されます。 Ack自体を変更せずに(少なくともプラグインを追加せずに)、この動作を無効にする方法はありません。

確認2

ack 2.0では、この-aオプションは削除されました。あなたができることは、すべてのファイルに一致するタイプを定義し、オプションを使用して-kackにそのタイプのすべてのファイルを含めることです。ファイルタイプは予測不能な順序で処理されるため、ランダムなバイナリタイプのセットは通常のタイプではなく通常のタイプとして扱われます。

ack --type-set='all:match:.*' -k foo

これにより、元のバイナリに見えるファイルに対しても一致するものが印刷されます。上記のように、これらのオプションをエイリアスまたは.ackrc

答え2

デフォルトでは、Ackは現在ディレクトリにあるすべての非バイナリファイルからパターンを取得します。

私は以前のAckバージョンにフラグを渡すとバイナリを検索すると信じています--binary。しかし、ロゴは削除されました。代わりにgrepを使用することもできます。

grep -ar 'foo' .

関連情報