O problema não é o ponto-e-vírgula, seu segundo exemplo cuidará disso. O problema é que os utilitários Linux / Unix (e, por extensão, o Cygwin) não usam essa instrução para significar "mover todos os arquivos terminados em .XLS;1 para .XLS ", como eu entendo que o Windows faz. Você precisa mover cada arquivo individualmente:
for file in *.XLS\;1; do
mv "$file" "${file%;1}"
done
Uma explicação:
Isso leva todos os arquivos terminados em .XLS;1 e os armazena um por vez em uma variável chamada $file . Para cada arquivo, nós dizemos para mover esse $file para um novo nome que criamos cortando ;1 da parte de trás de $file .
Para aqueles que usam zsh, existe um bom utilitário chamado zmv :
zmv '(*).XLS;1" "$1.XLS"
Dependendo da sua configuração, você pode precisar executar autoload zmv primeiro (coloque-o em seu .zshrc também).