Hay un comando Perlrename que debería hacer el truco. Sin embargo rename, tenga cuidado: hay varios comandos diferentes llamados , así que asegúrese de tener el script Perl que espera un perlexprcomo argumento. Este es el renamecomando proporcionado por el perlpaquete en Debian y derivados (Ubuntu, Mint, ...), pero no en otras distribuciones que pueden tener una utilidad diferente llamada 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 puede ver, es idempotente : no volverá a agregar el prefijo cuando lo llame varias veces.
Funciona reemplazando el inicio (longitud cero) de las cadenas ( ^) o el inicio seguido de una prefixcadena opcional con prefix.
Dejaré encapsular esto en un script de shell o una función de shell como un ejercicio para ti :)
Sin embargo, Postfix es un poco más difícil, porque tienes que descubrir qué parte del nombre de archivo constituye la extensión ...