In any shell, you can loop over the files whose name contains a space. Replacing the spaces with underscores is easy in bash, ksh and zsh with the ${VARIABLE//PATTERN/REPLACEMENT} construct.
for x in *” “*; do mv — “$x” “${x// /_}” done
On Debian, Ubuntu and derivatives, you can use the Perl rename (other distributions ship a different program as rename, and that program isn’t helpful here).
rename ‘s/ /_/g’ *
An obligatory zsh solution:
autoload zmv zmv ‘(*)’ ‘${1// /_}’
An obligatory POSIX solution:
for x in *” “*; do y=$(printf %sa “$x” | tr ” ” “_”) mv — “$x” “${y%a}” done