Subject: bug#3479: rgrep sends directories needlessly to grep

From: [email-masked]
Date: Sat, 06 Jun 2009 05:39:40 +0800

Gentlemen, I used the same string as e.g.,
(rgrep "bla" "*" "~/mediawiki/")
produced, and instead appended fgrep, and found
$ find . \( -path \*/CVS -o -path \*/.svn -o -path \*/\{arch\} -o -path \*/.hg -o -path \*/_darcs -o -path \*/.git -o -path \*/.bzr \) -prune -o  -type f \( -name \* \)|fgrep -c .svn
62
That's right, 62 .svn's, when you thought you had eliminated them. They
are all directories.

OK, now putting the print inside ( ),
$ cd ~/mediawiki/;find  . -path \*/.svn  -prune -o \( -type f \( -name \* \) -print \)|fgrep .svn
./math/.svnignore
./tests/.svnignore
Which were put there by the staff, so we have indeed eliminated what we
need to!

Therefore consider putting your ...-print0 inside a ( )!

Also only one space is needed between "-o  -type f".

(Of course grep doesn't give an error when given a directory.)