renombrar el segundo nombre de múltiples files usando bash

Tengo varios files ubicados en /opt/rec/ que quiero cambiar el nombre solo de una parte de él usando bash.

Nombre original del file:

 WK6LZTPR99999999_dig_2017-07-10 01:55:57.xy 

con el cual quiero cambiar todos los files en ese directory como:

 WK6LZTPR99999999_cur_2017-07-10 01:55:57.mp3 

Aquí está la solución bash .

 for file in /path/to/*; do nname="${file%%.*}.mp3" # strip last part of file till first . seen echo mv "$file" "${nname//dig/cur}" # replace 'dig' with 'cur' done 

Con mmv , es mucho más fácil.

 mmv '*_*_*.*' '#1_cur_#3.mp3' 

O con zmv :

 zmv -w '*_*_*.*' '$1_cur_$3.mp3' 

Con el command de cambio de nombre Perl :

 rename 's/_dig_([^.]+)\.xy$/_cur_$1.mp3/' /opt/rec/*.xy