Ao usar expressões regulares compatíveis com Perl (ou mais genéricas), você deve ter em mente que .
corresponderá a qualquer caractere; não apenas períodos (mas também apenas um caracter a menos que haja um quantificador).
O seguinte não foi testado, mas provavelmente tentarei usar essa solução com base nesta pergunta e respostas :
$ for old in ./combination*.txt; do
new=$(echo $old | sed -r 's/combination\.([[:digit:]]+)\.([[:digit:]]+)\.txt$/\1\2.txt/')
mv -v "$old" "$new"
done
Tenha em mente que isso não foi testado e pode ser interrompido. Você também pode usar echo
em vez de mv
para testar a coisa toda primeiro. :)