Este comando deve funcionar bem para você, como eu testei em alguns arquivos de exemplo com o mesmo padrão que o seu:
rename 's/(.*)(-.{11})\.txt$/$1\.txt/' *
Explicação:
Veja este comando simples:
rename 's/pattern/result/' filename(s)
O padrão pode ser regex. Então, podemos pegar uma parte diferente do texto (que é o nome do arquivo). Se você não entende, pesquise por regex. Parece complexo, mas se você aprender, é fácil.
Como resultado, pego o conteúdo do primeiro parêntese por $1
e deixo o segundo parêntese e, no final, adiciono .txt
a ele.
Aviso Importnat
Primeiro execute o comando com a opção -n -v
para ver apenas o que o comando faria. Se o resultado é o que você deseja, execute-o sem opções. Então, primeiro corra assim:
$ rename -n -v 's/(.*)(-.{11})\.txt$/$1\.txt/' *
rename(lua - eng1-6TH4eI8gtf3.txt, lua - eng1.txt)
rename(lua - eng2-6TH4eI8gtf4.txt, lua - eng2.txt)
rename(lua - eng4-6TH4eI8gtf5.txt, lua - eng4.txt)