Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 30 May 2009 14:12:50 +0200
From:      Mel Flynn <mel.flynn+fbsd.questions@mailing.thruhere.net>
To:        freebsd-questions@freebsd.org
Cc:        Zbigniew Szalbot <z.szalbot@lcwords.com>, Valentin Bud <valentin.bud@gmail.com>
Subject:   Re: find and searching for specific expression in files
Message-ID:  <200905301412.50958.mel.flynn%2Bfbsd.questions@mailing.thruhere.net>
In-Reply-To: <139b44430905300456x62bf9c0ybf46bcab6b64e25@mail.gmail.com>
References:  <dd6b168d2af9ddbcfc52e5c0397e4d6a.squirrel@relay.lc-words.com> <80cddf609e38046ffa0ce3f2bdab235c.squirrel@relay.lc-words.com> <139b44430905300456x62bf9c0ybf46bcab6b64e25@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Saturday 30 May 2009 13:56:22 Valentin Bud wrote:
> 2009/5/30 Zbigniew Szalbot <z.szalbot@lcwords.com>
>
> > >> Can you please give me a hint how to use find to search for a specific
> > >> text within files?
> > >
> > > Generally, you don't - find(1) does not examine the contents of files
> > > by itself, just their directory information.  You normally use grep(1)
> > > to search within a file.
> >
> > Ahhh - I use grep on daily basis. Now why didn't I think of it? I got so
> > fixed on the idea of using find that I completely forgot about grep....
> >
> > Sorry for the noise and thank you very much for your help!
> >
> > --
> > Zbigniew Szalbot
> >
> > _______________________________________________
> > freebsd-questions@freebsd.org mailing list
> > http://lists.freebsd.org/mailman/listinfo/freebsd-questions
> > To unsubscribe, send any mail to "
> > freebsd-questions-unsubscribe@freebsd.org"
>
> Hello Mr. Zbigniew Szalbot,
>
>  You can use egrep -r * (grep -e) to search for specific text pattern while
> you are in a directory with many sub directories. The output is nice
> because it tells you the file in which the text pattern was found :).

Discouraged because:
- it's possible to hit maxarglen if the root directory has many 
subdirectories.
- Will not search hidden directories in the root directory because of the 
shell glob
- cannot be combined with other search criteria such as the file's timestamp.

find . -type f -mtime 2 -exec grep '^Subject: \[SPAM\]' {} +

will find all messages in a maildir modified within the last 2 minutes where 
the subject has been flagged as spam. I use + rather then ; so that one 
invocation for grep is done whenever maxarglen is hit (like if you used 
xargs(1)), rather then one grep per file.
-- 
Mel



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200905301412.50958.mel.flynn%2Bfbsd.questions>