El uso de bucles for es muy habitual en scripting.

find . -name "*.gz" > /tmp/lista
for N in `cat /tmp/lista`
do
    SALIDA=`gzip -dc $N | grep "X-Envelope-From:" | grep "@dominio.com"`
    if [ -n "$SALIDA" ]; then
        printf $N
        echo $SALIDA | sed -e 's/X-Envelope-From: <//g'
    fi
done

El problema de for es que cada elemento se separa del siguiente por un espacio en blanco, tabulador, salto de linea… por ello si el listado fuera de archivos y hay elementos con espacio, tendremos problemas.

Por ello es mejor usar: 

find . -name "*.gz" | while read N
do
    SALIDA=`gzip -dc $N | grep "X-Envelope-From:" | grep "@dominio.com"`
    if [ -n "$SALIDA" ]; then
        printf $N
        echo $SALIDA | sed -e 's/X-Envelope-From: <//g'
    fi
done