O comando rename
usa expressões regulares, não padrões glob. Embora *foo
seja um padrão glob válido, não é uma expressão regular válida. O *
significa "0 ou mais", mas você também precisa especificar 0 ou mais o que . Para "qualquer caractere", use .
:
s/.*_suffix\.txt$/.txt/
Agora, o próximo problema é que s/_suffix.txt$/\.txt/' *.png
nunca funcionará. Você está dizendo a rename
para renomear todos os arquivos cujo nome termina em _suffix.txt
, mas está dizendo para fazer isso com arquivos cujo nome termina com png
. Isso é o que significa o *png
(que é um glob e não uma expressão regular).
Acho que o que você realmente queria é:
rename 's/_suffix//' *suffix.txt
Isso substituirá _suffix
por nada, ele simplesmente o excluirá, o que deve fornecer aos arquivos o nome que você deseja.