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 perlexpr
como argumento. Este es el rename
comando proporcionado por el perl
paquete 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 prefix
cadena 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 ...