The solution was yours:
Code:
find Music -type f -name '*.mp3' -print | rename 'y/_/ /'
Where Music is the folder holding all my music and it worked great, did recursive, changed all my files, are for the few files that I had duplicates of without the underscore it came back with a list of files that would not changed as file already existed.
This is the first time I had piped output. I have seen it done before, did try with improper syntax on a previous attempt and that when I got looking at the exec option on find. But the pipe worked great.
As for other posts in thread warning that underscore is better in file names. i would agree, but the app I am using searches for music by name, and present an issue for people to have to type a multi part name with underscores hoping to match exactly, by having the space the app finds files the way it should. For example searching Hotel California will not find anything as it was looking for Hotel_California. you could do Hotel or California separately but not as "Hotel California" which is preferred.
The app in question is opensource so perhaps in the future I can make it translate the underscores to spaces in the array of files it holds so can still perform easier user search but maintain the underscore in file names. For the time being the removal of underscores seems fastest option.
edit: would like to add that the process took about 2 seconds to convert 12k songs, that what I love about cli is the speed and power, unfortunately I am still a noob and still learning.