ggrep --devices=skip
Every now and then I'd like to (recursively) search for patterns in a directory tree. Since Solaris' grep(1) does not understand -r
, I used SUNWggrep
. But grep'ing through e.g. /etc
never seems to come to an end, and truss(1) knows why:
$ /usr/sfw/bin/ggrep --version | head -1 grep (GNU grep) 2.5 $ truss -elfda /usr/sfw/bin/ggrep -D skip -r foo /etc [...] 8341/1: 0.0448 open64("/etc/cron.d/FIFO", O_RDONLY) = 3 8341/1: 0.0454 fstat64(3, 0xFFBFFA78) = 0 8341/1: read(3, 0x00044000, 32768) (sleeping...)Well, I won't comment on the fact that we have devices in
/etc
at all, but I explicitly told grep
to skip devices. Apparently this option is just being ignored. Using the latest GNU/grep CVS checkout does help and the changelog does indeed mention a fix for the --devices
option.Oh, of course: this could be done with find too, but GNU/grep is so much easier than:
$ find /etc -type f -exec grep foo '{}' +Hint: add "
-D skip
" to your GREP_OPTIONS
environment variable, that way it's passed to GNU/grep automatically.Update: a careful reader noticed that I confused
SUNWggrep
and
SMCgrep - I did indeed and corrected it, finally. Thanks for the hint! For the record, the current version of SMCgrep
does NOT have this problem, it's all good! :-)