Isso deve funcionar e ser agnóstico de shell, executá-lo como um script com um único parâmetro, que é o seu diretório base.
-
Ele usa
findpara obter os nomes dos diretórios um por linha, presumindo que eles estejam localizados imediatamente abaixo do diretório base fornecido e excluindo quaisquer que já tenham sido convertidos. -
Ele usa
awkpara remover o diretório base da lista, deixando em cada linha apenas o nome do diretório imediato que é o que você deseja alterar. (awkaqui usa / como um delimitador de campo e imprime o último campo em cada linha.) -
Ele usa
awkuma segunda vez para imprimir um comandomvpara renomear cada um desses diretórios da maneira que você solicitou. (awkaqui usa o espaço em branco padrão como um delimitador de campo.) -
Salve a saída em um arquivo e execute-a quando estiver satisfeito.
.
#!/bin/sh
find "$1" -mindepth 1 -maxdepth 1 -type d -not -name "*,*"|\
awk -F/ '{print $NF}'|\
awk -v DIR="$1" '{printf "mv \"" DIR "/" $0 "\" \"" DIR "/" $NF", "; for (i=1; i<NF; i++) {printf $i" "}; printf "\"\n"}'