60

通常のgrepコマンドには、 grepを実行しているときに特定のファイルを無視できる--excludeオプションがあります(ここで詳しく説明します:grep --exclude /-include構文を使用して特定のファイルをgrepしないようにします)。

Ackの--typeオプションは、ファイルを除外したい場合の95%を処理しますが、特定のファイルを除外する場合は(私が知る限り)処理しません。他のすべてのJSファイルの内容を(1行で)含むコンパイル済みJSファイルがあるので、何かをgrepするたびに、その巨大なコンパイル済みファイルの内容全体が返されます。

ackをあきらめて、これについてgrepに戻る必要はありませんが、それは本当に面倒です。誰かが、特定のファイルをack検索から除外する方法があると教えてください。

4

5 に答える 5

115

ack 2.0を使用して単一のファイルを無視するには、-ignore-fileフラグにフィルター仕様を指定します。

--ignore-file=is:cljout.js

于 2013-06-14T02:07:09.487 に答える
23

実行ack --create-ackrcすると、縮小されたjavascript、css、node_modulesや.gitなどのディレクトリなどの一般的なファイルのプリセットが大量に出力されます。非常に便利!

縮小されたjsオプションは次のとおりです。

# minified Javascript
--ignore-file=match:/[.-]min[.]js$/
--ignore-file=match:/[.]js[.]min$

そして、fooというディレクトリを無視する方法は次のとおりです。

--ignore-directory=is:foo

これを保存して.ackrc実行する場合

ack --create-ackrc >> ~/.ackrc

次に、そのファイルから不要なものを削除します。

また、.ackrcプロジェクト固有のもののために、プロジェクトのルートフォルダに別のファイルを作成できます。.gitignoreリポジトリが乱雑にならないように入れました。

于 2017-06-30T03:28:20.047 に答える
15

いいえ、ack1.xでは単一のファイルを除外できません。ack 2.0では、可能です。ack 2.0は現在最初のアルファ版でしたが、現在推奨されているバージョンのackです。

縮小されたJavascriptファイルの特定のケースに関しては、どのバージョンのackを使用していますか?ack 1.96は、拡張機能に基づいて縮小されたJavaScriptを無視する必要があります。拡張機能チェックが機能しない場合は、単一のPerlプログラムであるため、ack自体をハックする可能性があります。関数をハックすることができis_searchableます。

ack 2.0では、明らかにソースコードではないため、たとえば500文字を超える行を無視することを検討しています。

また、 ack-usersメーリングリストに参加することもできます。私たちはかなり敏感です。

于 2012-07-24T21:32:05.307 に答える
2

また、ack2.0で知っておくとよいことですが、ファイルを頻繁にフィルタリングする必要がある場合は、.ackrcファイルでこれらのオプションを指定できます。

于 2016-06-27T22:27:13.817 に答える
2

特定のフォルダを除外する場合は、次のコマンドが役立ちます。

ack keywords --ignore-dir folder_name

man ack詳細を提供します:)

--[no] ignore-dir = DIRNAME、-[no] ignore-directory = DIRNAME

--ignore-file = FILTERTYPE:FILTERARGS

于 2018-05-13T13:17:26.923 に答える