ファイルの内容をgrepしてファイル名を返す

ファイルの内容をgrepしてファイル名を返す

次のタスクには GREP 構文が必要です (LINUX OS を使用しています)。

現在のディレクトリ内で STRING を含むすべてのファイルを照会しますが、一致する FILENAMES のみをリストします。

ありがとう!

答え1

使用できます

grep -rl stringToSearch .

または

 find . -type f -exec grep -l stringToSearch {} \;

grepその他のUNIXコマンドの詳細については、マニュアル( man)を参照してください。

その場合man grep

-l, --files-with-matches 通常の出力を抑制し、代わりに、通常出力が印刷される各入力ファイルの名前を印刷します。
スキャンは最初の一致で停止します。

当然のことながら、bashコマンドとして、文字列に特殊文字やスペースが含まれている場合は、それらをエスケープするか、文字列をクォータで囲む必要があります。

答え2

「Grep -l」を実行するとファイル名のリストが表示されます。

> echo "hello" > test_file1.list
> echo "hello2.." > test_file2.list
> echo "xyz" > test_file3.list


> grep "hello" test_file*list

test_file1.list:hello
test_file2.list:hello2..


> grep -l "hello" test_file*list
test_file1.list
test_file2.list

関連情報