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).