find in conjuction with grep

Kevin Wang rightsock at gmail.com
Wed Aug 11 19:45:18 UTC 2004


to be a little more explicit and to throw an extra trick in your bag,
I usually write tihs up (in scripts, not typically on the command
line) as:

find . -type f -print0 | xargs -0 egrep 'want | phrase' /dev/null

why the /dev/null?  grep will only prepend the filename in the output
if there's more than 1 file.  This guarantees that you'll always have
at least 2 files.

imho, the grep -r option does not belong. but maybe I'm being an old
unix codger.  There's plenty of existing ways to do it. I don't see
the benefit to -r.  It's less flexible than find.

   - Kevin

On Wed, 11 Aug 2004 20:43:10 +0200, Alexander Dalloz
<alexander.dalloz at uni-bielefeld.de> wrote:
> Am Mi, den 11.08.2004 schrieb Kevin Old um 20:31:
> 
> > I've been using
> > find . -exec grep "phrase I want" {} \;
> 
> Not the best way. Using -exec is problematic.
> 
> > for quite a while to search recursively through directories and files
> > to find a phrase or word.
> >
> > The results I get back are simply the line(s) that contained the
> > phrase, but no path or filename.
> 
> find . -print0 | xargs -0 grep "string"
> 
> > I'd thought about the -name flag, but I can't seem to figure out how
> > to use it, though it is more for using to search for file names rather
> > than display the name, it seems.
> 
> find /path/to/search/under -name "*string*"
> 
> will find all object names with "string" anywhere in, like "stringfoo"
> or "foostringbar" or just "string".
> 
> > Kevin
> 
> Alexander
> 
> --
> Alexander Dalloz | Enger, Germany | GPG key 1024D/ED695653 1999-07-13
> Fedora GNU/Linux Core 2 (Tettnang) kernel 2.6.7-1.494.2.2smp
> Serendipity 20:40:56 up 7 days, 14:08, load average: 4.07, 3.31, 2.20
> 
> 
>





More information about the users mailing list