0

このフォーラムでは、ファイル内の複数の文字列を検索するための質問がたくさんあるようですが、複数のファイル内の複数の文字列を検索するための解決策を見つけることができません。

パイプで区切られた検索結果の使用は、常にORステートメントです。私が欲しいのは、正規表現であれ、複数の入力を可能にするツールであれ、「AND」ステートメントを提供するものです。

dnGrep、WinGrep、PowerGrep、およびBareGrepを試しましたが、これらのいずれもこの機能を提供していないようです。grepのストアドプロシージャを使用している方は、私の痛みをご理解いただけると思います。

同じ汎用列名を共有するいくつかのテーブルがストアドプロシージャに存在し、テーブル名をエイリアスする場合、TableName.ColumnNameを単に検索することはできないため、これは非常に面倒になります。

誰かがこれで私を助けることができればそれは素晴らしいでしょう。誰かがツールを知っているか、自分でツールを書いたことがあれば、これは素晴らしいことです。また、JavaおよびC#コードを検索する場合にも役立ちます。

4

2 に答える 2

3

パターン1、パターン2、パターン3を含む特定のディレクトリ内のすべてのファイルを検索するとします。

grep -r -l pattern1 . | xargs grep -l pattern2 | xargs grep -l pattern3

-rオプションは、すべてのファイルをチェックするために繰り返されます。-lは、一致するファイルを一覧表示するだけです。xargsは、前のgrepのファイルのリストを次のgrepの入力引数に変換します。パターンがたくさんある場合は、これをスクリプトまたは派手なエイリアスにまとめることができます。

検索を特定のファイルタイプに制限する場合はfind、最初に入力ファイルを制限するために使用できます。

find . -name "*.h" | xargs grep -l pattern1 | xargs grep -l pattern2 | xargs grep -l pattern3
于 2012-07-09T20:40:13.297 に答える
2

以下を含むバッチファイルsearch.batを作成します。

@echo off
for /F "usebackq delims=|" %%I in (`findstr /M /C:%2 %1`) do findstr /M /C:%3 "%%I"

search.batは3つのパラメーターを取ります。1つ目は、ワイルドカードのファイル名です。2番目と3番目は検索文字列です。例えば、

search *.h deprecated security

「deprecated」および「security」という単語を含むすべてのヘッダーファイルを検索します。

于 2012-07-09T20:35:26.160 に答える