どうやって検索できますか?みんな現在のディレクトリに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では、このフラグを使用して、-a
ackが認識しない種類のファイルをスキップしないように指示します。
このフラグが頻繁に必要な場合は、別名を作成できます。またはalias ack='ack -a'
に~/.bashrc
この行を追加してください~/.zshrc
。このエイリアスを設定してack
このオプションなしで呼び出すには、次のように呼び出します\ack
(バックスラッシュはエイリアス拡張を無効にします)。スクリプトはエイリアスの影響を受けず、インタラクティブシェルのみが影響を受けます。
または、-a
このオプションを~/.ackrc
。
バイナリの一致は「Binary test1 match」と表示されます。 Ack自体を変更せずに(少なくともプラグインを追加せずに)、この動作を無効にする方法はありません。
確認2
ack 2.0では、この-a
オプションは削除されました。あなたができることは、すべてのファイルに一致するタイプを定義し、オプションを使用して-k
ackにそのタイプのすべてのファイルを含めることです。ファイルタイプは予測不能な順序で処理されるため、ランダムなバイナリタイプのセットは通常のタイプではなく通常のタイプとして扱われます。
ack --type-set='all:match:.*' -k foo
これにより、元のバイナリに見えるファイルに対しても一致するものが印刷されます。上記のように、これらのオプションをエイリアスまたは.ackrc
。
答え2
デフォルトでは、Ackは現在ディレクトリにあるすべての非バイナリファイルからパターンを取得します。
私は以前のAckバージョンにフラグを渡すとバイナリを検索すると信じています--binary
。しかし、ロゴは削除されました。代わりにgrepを使用することもできます。
grep -ar 'foo' .