Há um comando Perlrename que deve fazer o truque. Cuidado, porém: existem vários comandos diferentes chamados rename, portanto, certifique-se de ter o script Perl que espera perlexprcomo argumento. Este é o renamecomando fornecido pelo perlpacote no Debian e derivados (Ubuntu, Mint,…), mas não em outras distribuições que possam ter um utilitário diferente chamado rename.
martin@martin ~/test % touch a.txt
martin@martin ~/test % touch b.txt
martin@martin ~/test % rename 's/^(prefix)?/prefix/' *.txt
martin@martin ~/test % ll
insgesamt 0
-rw-rw-r-- 1 martin martin 0 Sep 19 23:56 prefixa.txt
-rw-rw-r-- 1 martin martin 0 Sep 19 23:56 prefixb.txt
martin@martin ~/test % rename 's/^(prefix)?/prefix/' *.txt
martin@martin ~/test % ll
insgesamt 0
-rw-rw-r-- 1 martin martin 0 Sep 19 23:56 prefixa.txt
-rw-rw-r-- 1 martin martin 0 Sep 19 23:56 prefixb.txt
Como você pode ver, é idempotente - ele não adicionará o prefixo novamente quando você o chamar várias vezes.
Ele funciona substituindo o início (comprimento zero) das strings ( ^) ou o start seguido por uma prefixstring opcional por prefix.
Vou deixar encapsular isso em um script de shell ou em uma função de shell como um exercício para você :)
O Postfix é um pouco mais difícil, porque você precisa descobrir qual parte do nome do arquivo constitui a extensão ...