Vamos ver, que tal ...
for f in *.mpg; do
touch -r "$f" "${f}.m4v"
done
Não há necessidade de expressões regulares, apenas para tirar o problema do lado direito. É muito mais fácil circular através de * .mpg e adicionar .m4v a eles do que o contrário, embora você também possa escrevê-lo de outra maneira sem regexps (apenas por diversão):
for f in *.m4v; do
touch -r "${f%\.m4v}" "$f"
done
Se você quer que seja feito com um comando, você pode fazer isso com find
(restringindo-o a um nível para segurança):
find . -maxdepth 1 -name '*.mpg' -exec touch -r {} {}.m4v \;