EDIT: I was wrong, sorry. Please un-accept this answer so I can delete it.
Would I also need to include IFS= ?
no, read -d '' makes the zero byte the delimiter.
Note that there's elegant alternatives to find … | while … read…!
find -type f -exec some_command {} ';'
will run just some_command filename for every file found;
# for bash
shopt -s nullglob dotglob globstar
shopt -u failglob
for file in **/*; do
[[ -f $file ]] || continue
[[ -L $file ]] && continue
what_you_wanted_to_do
done
works without find at all in bash; in zsh, you don't even need to check for "regular fileness", you can just recursively glob for regular files:
#for zsh
for file in **/*(ND.) ; do
what_you_wanted_to_do
done