grepコマンドが検索文字列のピリオドを無視するのはなぜですか?

grepコマンドが検索文字列のピリオドを無視するのはなぜですか?

私が使用するコマンドは次のとおりです。

find . -type f -name "*.sql" -exec grep -i -l 'schema_name.' {} +

私が検索したいものはすべて含まれていますschema_name.。しかし、findコマンドは最後のものを無視し、代わりにそれを探し.ます。schema_nameschema_name.

ベストアンサー1

それはgrep問題です、いいえfind

grepデフォルトでは、正規表現はschema_name.文字列の後のすべての文字を表すパターンを一致させるために使用されますschema_name

ドットを文字通り一致させるには、.バックスラッシュを使用してドットをエスケープする必要があります\

find . -type f -name "*.sql" -exec grep -il 'schema_name\.' {} +

または、-F次のオプションを使用してください。

find . -type f -name "*.sql" -exec grep -Fil 'schema_name.' {} +

おすすめ記事