Script to rename files

I have the following directories in my home directory,

my scripts
dbmig es
ms_done
my-home

I want my output to look like the following

MyScripts
DbmigEs
MsDone
MyHome

Basically, I want to get rid of spaces,special characters and convert the first letter of each word to uppercase and the rest to lowercase

I'd suggest PERL for the case minipulations in particular. Or bash (string - BASH - Make the first Letter Uppercase - Stack Overflow):

$ bash -c 'z=xxx ; echo "${z^}"'
Xxx
$

or zsh (http://www.linuxquestions.org/questions/programming-9/bash-change-first-character-to-upper-case-570445/\):

$ role="operator"
$ echo "${(C)role}"
Operator
$