You can access a file's name as a variable using the 'echo' command. Once that is done, the most powerful way to make your desired changes is to use 'sed'. You can string together sed commands with the '-e' flag. As part of a for loop in bash, this line gives you a start. You can also use a line like this as part of your 'find' statement.
echo $fyle | sed -e 's/FOO//gI' -e 's/BANG//gI'
Once you have your desired file names, you can then move them back to the original name. Let me know if you need more specific instructions.
UPDATE: Here is a more complete solution. You'll have to tune the script to your own file names, etc.
for fyle in $(find . -name "*.*")
do
mv -i $fyle `echo $fyle | sed -e 's/FOO//gI' -e 's/BANG//gI' `
done
Finally, to replace more than one whitespace character with one whitespace character, you can add another sed command. Here is a working command:
echo "file input.txt" | sed 's/ */ /g'