Article 3334 of comp.lang.perl:
Xref: feenix.metronet.com comp.lang.perl:3334
Newsgroups: comp.lang.perl
Path: feenix.metronet.com!news.ecn.bgu.edu!wupost!spool.mu.edu!sgiblab!adagio.panasonic.com!chorus.mei!oskgate0.mei!wnoc-kyo!sh.wide!wnoc-tyo-news!sranha!sranhd!sran230!utashiro
From: [email protected] (Kazumasa Utashiro)
Subject: Re: Directory Grep??
References: <[email protected]>
Organization: Software Research Associates, Inc., Japan
Date: Fri, 11 Jun 1993 02:06:22 GMT
Message-ID: <[email protected]>
Lines: 70

In article <[email protected]>
       [email protected] (John T Ellis) writes:
>> Has anyone implemented a directory grep in perl?  My ideal
>> view of the tool includes -
>>
>>      - Ability to handle multiple (controlled by an option ie. -l)
>>        levels of directories
>>
>>      - Ability to handle multiple (controlled by an option ie. -s)
>>        levels of symbolic links
>>
>>      - Ability to exclude certain directories from being searched
>>        (-i ??)
>>
>>      - Ability to accept wildcards in the file specification
>>
>>      - Ability to designate starting directory (-d ??)
>>
>> Therefore, to do a directory search for the word 'perl' starting in /usr/lib,
>> descending 3 sub-directory levels, allowing only 2 levels of symbolic links,
>> and not searching the any directory named 'tmp' you would do the following:
>>
>>      dgrep -l 3 -s 2 -i 'tmp' -d /usr/lib perl*
>>
>> Does something like this (or any other variation thereof) exist?

My mg supports some of them.  Here is directory related
options list.

usage: mg [ -options ] pattern [ file... ]
       ...
       -R          search recursively
       -P pattern  specify search file in wildcard (w/-R)
       -V pattern  specify exception file in wildcard (w/-R)
       -F          follow symbolic link of directory (w/-R)
       ...

You can use it like this.

       mg -RV tmp perl /usr/lib

This morning, I added an option to specify descending
directory level in one minute and it seems to work pretty
well.  So I included it as a feature but the interface may
change in the near future.  Currently, you can use it like
this.

       mg -RV tmp -D3 perl /usr/lib

There is no option to handle levels of symbolic link.
Option -F specifies follow directory symlink or not, but
symlink for a file is always followed.

MG is available from

       srawgw.sra.co.jp:pub/lang/perl/sra-scripts

I'm thinking to post again it here because it has been
improved much after last posting.  Does anybody want it?

;# EXAMPLES:
;#      % mg 'control message protocol' rfc*.txt.Z      # line across search
;#      % mg -nRTP '*.[sch]' 'struct vnode' /sys        # recursive search
;#      % mg -o sockaddr /usr/include/sys/socket.h      # paragraph mode
;#      % mg -Bc0,1 '@(#)' /lib/libc.a                  # binary mode
;#      % mg -iTB copyright /bin/*                      # auto bin/text mode
;#      % tset -IQS | mg -ec0 '(so|se)=[^:]+'           # matched part only
;#      % echo $path | mg -Q mh                         # highlighting

--utashiro