#! /bin/sh # grep for stuff in each message from mailboxes, sending # matching messages to stdout. # regexp=${1?} maild=${2:-$HOME/Mail} tmp=$HOME/tmp if test ! -d $tmp; then mkdir $tmp || exit 1 fi # temporary scripts s1=$tmp/s1-$$ s2=$tmp/s2-$$ # duplicate database for formail dups=$tmp/dups-$$ : > $dups cat <<'EOF' | sed -e "s!@XregexpX@!$regexp!" -e "s!@XtmpX@!$tmp!g" > $s1 cat > @XtmpX@/m-$FILENO if test "`egrep -i '@XregexpX@' @XtmpX@/m-$FILENO`"; then printf "+" 1>&2 cat @XtmpX@/m-$FILENO else printf "-" 1>&2 fi rm @XtmpX@/m-$FILENO EOF cat <<'EOF' | sed -e "s!@Xs1X@!$s1!" -e "s!@XdupsX@!$dups!" > $s2 cat $* | formail -D 10000000 @XdupsX@ -s sh @Xs1X@ EOF trap "rm -f $s1 $s2 $dups" 2 find $maild -type f -print0 | xargs -0 -n 20 sh $s2 echo 1>&2 rm -f $s1 $s2 $dups