ack を使用して dev/ (-R) を除外しながら、サーバー全体で文字列を検索しようとしています。これまでのところ、
sudo ack -i --ignore-dir=dev * foo
--version ack v1.39
しかし、私はエラーが発生しています。どこが間違っていますか?
この問題に関するヘルプやアドバイスは大歓迎です
まず、「エラーが発生しました」と言うときはいつでも、それを「次のエラーが発生しています」に変更してから、エラーの内容をお知らせください。このエラーは、問題の診断に役立てるために重要です。
2 つ目は、使用している ack のバージョンが非常に古いことです。最新は1.96です。
第三に、あなたの議論は順不同です。「foo」で検索していますよね?次に、「ack * foo」ではなく「ack foo *」を実行する必要があります。
ファイル名に「*」を指定しないでください。ファイルの検索は ack に任せます。「dev」が呼び出し元のディレクトリ内のディレクトリである場合、「ack *」は「ack dev [他のディレクトリ]」に展開され、「dev」ディレクトリを検索するよう明示的に ack に指示します。--ignore-dir
指令。
あなたがすべきことは次のとおりです。
ack -i --ignore-dir=dev foo
そして、ファイル検索を ack に任せます。何らかの理由ack
で検出されたファイルをオーバーライドする必要がある場合にのみ、コマンド ラインでファイル名を指定する必要があります。
最後に、そもそもこのタスクに ack を使用するべきではありません。ack は特にソース コードを検索するためのものであり、ソース コードと見なされないファイルは検索しません。サーバー全体を検索する場合は、おそらくソース コード以外のファイルも検索する必要がありますよね? これには grep を使用します。