Le principe est simple. La commande find recherche tous les fichiers comportant un espace puis exécute pour chaque fichier trouvé la commande rename qui remplace tous les espaces par des underscores.
$ find ./ -depth -name "* *" -exec rename 's/ /_/g' "{}" \;