Captura de Grupos Desde una Expresión Regular Grep


Tengo este pequeño script en sh (Mac OSX 10.6) para mirar a través de una matriz de archivos. Google ha dejado de ser útil en este punto:

files="*.jpg"
for f in $files
    do
        echo $f | grep -oEi '[0-9]+_([a-z]+)_[0-9a-z]*'
        name=$?
        echo $name
    done

Hasta ahora (obviamente, para los gurús de shell) $name simplemente contiene 0, 1 o 2, dependiendo de si grep encontró que el nombre del archivo coincidía con el asunto proporcionado. Lo que me gustaría es capturar lo que está dentro de los paréntesis ([a-z]+) y almacenarlo en una variable.

Me gustaría usar grep solo, si es posible. Si no, por favor no Python o Perl, etc. sed o algo parecido: soy nuevo en shell y me gustaría atacar esto desde el ángulo de *nix purist.

También, como un super-cool bonu s, tengo curiosidad en cuanto a cómo puedo concatenar cadena en shell? Es el grupo que capturé fue la cadena "somename" almacenada en name name, y quería agregar la cadena ".jpg " hasta el final, podría cat $name '.jpg'?

Por favor, explique lo que está pasando, si tiene tiempo.


Warning: Undefined property: agent_blog_content::$date_asked in /var/www/agent_etc/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 32

Warning: Undefined property: agent_blog_content::$count_answers in /var/www/agent_etc/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 52