Not actually a question, but a response to How to replace spaces in file names using a bash script; as I've not yet acrued enough 'reputation'. However, I too have recently suffered from the issue of 'rogue' character including pathnames arriving into secondary storage, that needed Ux fixing; spaces included. Expanding on Michael Krelin soln there, though, I was finally able to figure out an 'all Ux' command solution; no extra special code. So, as a follow on, check this out, as it is able to change any Ux 'roguely; named file/dir name, into one that is composed of only satisfactorily composed character string names. It is also able to, (and does) deal w/I18n modification capability, as well. It too, is able to clean up full directory tree worth of fns/dirnms. Have fun:
$ idx=0; find . -depth -name "*[ &;()]*" | while IFS= read -r pathNm ; do ((idx++)); printf "\n%d\t%s\t-->\n\t%s" "$idx" "$pathNm" "$(dirname "$pathNm" | tr '\050' '\137' | tr '\051' '\137')/$(basename "$pathNm" | tr '\040' '\055' | tr '\041' '\055' | tr '\042' '\055' | tr '\043' '\055' | tr '\044' '\055' | tr '\045' '\055' | tr '\046' '\055' | tr '\047' '\055' | tr '\050' '\137' | tr '\051' '\137' | tr '\052' '\055' | tr '\053' '\055' | tr '\054' '\055' | tr '\072' '\055' | tr '\073' '\055' | tr '\342' '\055' | tr '\200' '\055' | tr '\223' '\055' | sed s/[_-]/_/g | sed s/-_/_/g | sed 's/--/_/g' | sed s/\\.-/_/g | sed s/[_-]\\./_/g | sed 's!__!!g' )"; done