grep は .dat 拡張子を考慮しますか?

grep は .dat 拡張子を考慮しますか?

GNU grep 2.6.3
Linux バージョン 2.6.32-220.el6.i686 (Red Hat 4.4.6-3)

grep が機能しない .dat ファイルがあります。これはプレーン テキストであり、すべての標準出力コマンド (「less」、「cat」など) で読み取ることができるため、内容がわかります。

そこに含まれていることが確実であるフレーズを grep しても、何も見つからなかったかのように何も返されません。

奇妙なことに、 のように別の拡張子で名前を変更すると、file.dat.txtgrep は正常に動作します。 に名前を戻すとfile.dat、再び grep は何も見つけられなくなります。

また、 echo コマンドを使用して単純に .dat ファイルも作成しました。
echo "grep this" > test.dat
それでも、grep "grep" test.dat何も返されませんでした。
しかし、 の後mv test.dat test.dat.txtgrep "grep" test.dat.txt正常に動作するようになりました。

回避策は簡単です (ファイルの名前を変更する) が、これは奇妙な動作だと思いました。

答え1

これは通常の動作ではなく、Ubuntu マシンでも Centos マシンでも問題を再現できません。

GREP_OPTIONSbashrc (または bash_profile、profile など) で *.dat を無視するように設定されている可能性が非常に高くなります。

これを確認するには、env 変数を印刷するだけです。

 echo $GREP_OPTIONS

出力のどこかに-exclude=*.dat

編集: コメントでFoxが示唆したように、これはエイリアスである可能性もあり、その場合は出力のどこかにcommand -v grep表示されるはずです。-exclude=*.dat

関連情報