In the following example,
grep behaves strangely: it's supplied with
-I option, which, according to man page, should make
grep ignore binary files (similarly to
--binary-files=without-match), but I still get the "Binary file matches" output.
$ cat <<'EOF' | uudecode > test-file begin 664 /dev/stdout M>`&5SLU*Q$`0!&#/>8J^"TM/=^8/1%2\>1`\>.^9Z=D-9!))9@7?WBB^@%"G MHOBHO+8V=2!'-WU3A9PX%*8PBB:VGK@6)Y*HFAB(.2;.;$SQPX=LNG3(>2SH MDJE!5;R+E9P21J::8U2+?@R>RK&7:[^L&[Q=]UD6>)$D?9<O_82[Y$\&S4_, MP[G)-)_RVN[!6(S.>F0/M\B(P]$>5[O^%_$8+/(?,CSI+]%DD;/"^^,K3`OD ,6?8=GK6MPS?WDU!" ` end EOF $ grep -I 8 test-file Binary file test-file matches $ grep --binary-files=without-match 8 test-file Binary file test-file matches
grep considers the file binary, but still does try to match and reports the results with it. Why is the "binary file" not ignored as the
-I option prescribes?
I'm using GNU grep 3.1 on Ubuntu 18.04.