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 perlexpr
como argumento. Este é o rename
comando fornecido pelo perl
pacote 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 prefix
string 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 ...