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.