Se você estiver em um sistema Linux com utilitários GNU (em oposição ao BusyBox ou outra coisa), você pode fazer isso de forma muito eficiente com find e cp :
find /src -maxdepth 1 -type d -regex '.*/[0-9A-Za-z-]+$' -exec cp -r -t /dst {} +
Isso localiza todos os diretórios no nível superior de /src que contêm apenas caracteres alfanuméricos ou hífens e, em seguida, transfere todos eles para cp para copiá-los recursivamente em /dst . A opção -t para cp permite especificar o "diretório de destino" primeiro, portanto, todos os argumentos restantes podem ser os itens que você deseja copiar. Isso permite que você use o {} + construct do find, o que faz com que ele passe o maior número possível para uma única invocação de cp (semelhante a xargs ). Dessa forma, se você tiver uma tonelada de diretórios para copiar, não estará chamando cp uma vez para cada um.