web-dev-qa-db-ja.com

「grep」を使用して複数のファイルのテキストを照合する

複数のファイルにデータがあります。すべてのファイルで一致するテキストを検索したい。 grepコマンドを使用できますか?はいの場合はどうですか?

6
Rupesh Pawar

ファイルの正確な場所はわからないが、その名前はわかっている場合は、findを使用できます。

find .  \( -name "filename1" -o -name "filename2" \) -exec grep "<grepstatement>" '{}' \; -print

ファイルがこのディレクトリのどこかにあると仮定します。

7
Mark D

コマンドラインですべてのファイルを追加するだけです。 *または?を使用できます。またはシェルがプレースホルダーとして許可するものは何でも。

マンページから:

grep [OPTIONS] PATTERN [FILE...]

つまり、必要な数のファイルを作成します。stdin/ pipeをgrepする場合は、なしを指定します。

7
oenone
grep 'mydata' *

スター*記号は、複数のファイルで検索することを示します。複数のディレクトリにある複数のファイルを検索する場合は、-Rを追加して再帰的に検索できます。

grep 'mydata' * -R
6
Mattias Geniar

私は最終的に:

grep -rli 'match_me' -- file1 file2 file3

Debian/Bashシステムでは広く標準のように見えますが、名前のない2つのダッシュは、これ以上フラグを定義できないことを意味します。多くの場合、残りの引数はすべてファイルパスです。免責事項ですが、これが意図した意味であるのか、私が使用するツールに適合する単なる症状であるのかはわかりません。

1
ThorSummoner