E.g.
$> touch file_{1..40..3}.txt
$> while IFS= read -r -d'.' a; do echo "got $a"; done < <(find . -type f -print0)
has the same results as
$> while IFS= read -r -d '.' a; do echo "got $a"; done < <(find . -type f -print0)
got
got /file_40
got txt
got /file_37
...
got txt
got /file_1
Yet if we look for the null byte:
$> while IFS= read -r -d'' a; do echo "got $a"; done < <(find . -type f -print0)
returns nothing
$> while IFS= read -r -d '' a; do echo "got $a"; done < <(find . -type f -print0)
returns the expected results
got ./file_40.txt
got ./file_37.txt
got ./file_34.txt
...
got ./file_16.txt