for name in *\[*\]\ -\ *; do
if [[ -d "$name" ]] && [[ ! -e "${name#* - }" ]]; then
mv "$name" "${name#* - }"
fi
done
O loop acima, que funcionaria em bash
ou ksh93
, passa por todos os nomes no diretório atual que correspondem ao padrão globbing de nome de arquivo *\[*\]\ -\ *
(os colchetes e espaços precisam ser escapados do shell) e testes para se certificar de que é um diretório e que o nome modificado ainda não existe. Se tudo estiver ok, então ele renomeia o diretório.
A expansão do parâmetro ${name#* - }
assumirá o valor da variável name
e removerá tudo desde o início até a primeira ocorrência de ␣-␣
(espaço-traço-espaço).