this is what i use:

cpue% cat bin/rc/mgrep
#! /bin/rc

if (test ($#* -lt 1) -o ($#* -gt 2)) {
        echo 'usage: mgrep [from] regex'
        exit
}

if (test ! -d /mail/fs/mbox) {
        echo '/mail/fs/mbox does not exist'
        exit
}

if (~ $#* 1) {
        grep $1 /mail/fs/mbox/*/body
        exit $?
}

for (i in `{grep $1 /mail/fs/mbox/*/from}) {
        d=`{basename -d $i}
        if (grep $2 $d/body) {
                echo $d
        }
}


also, i just looked at Mg. i'm not sure why i would do 'Mg foo bar
baz' when i can do grep '(foo|bar|baz)'

> A few days ago, someone in #plan9 asked how to search for all
> messages with a certain string in Acme Mail. The provided answer
> was "grep(1)", which has the advantage of being concise and
> maybe nominally correct, but the disadvantage of being totally
> useless as a practical answer.
> 
> Today I found myself needing the same thing again, so I wrote Mg.
> I can't remember who wanted this, and it might be more widely
> useful, so I've put it at /n/sources/contrib/anothy/bin/rc/Mg. It's
> intended to be put in an Acme Mail tag line and invoked as
>       Mg foo bar
> although all it really cares about is being run from within a
> /mail/fs/foo directory. For each argument, it will search the
> subject and body of every message in that mailbox and ask the
> plumber to open any matching messages.
> 
> Right now it does no error checking, always folds case, checks
> body and subject always/only, has been only trivially tested, and
> I'm somewhat skeptical of the multipart handling, but it's already
> saved me more time than it took to write (which, except for the
> suspect multipart handling, was less than the time it took to write
> this note).
> 
> Mg depends on Dan Cross' 'walk' (/n/sources/contrib/cross/walk.c).


Reply via email to