How can I escape white space in a bash loop list? – Stack Overflow

I find this nice and elegant. The other proposed solutions may handle files with newline in their name, but currently I see such file names as nonsense
<span class="pln">find </span><span class="pun">.</span> <span class="pun">-</span><span class="pln">type d </span><span class="pun">|</span> <span class="kwd">while</span><span class="pln"> read file</span><span class="pun">;</span> <span class="kwd">do</span><span class="pln"> echo $file</span><span class="pun">;</span> <span class="kwd">done</span>

However, doesn’t work if the file-name contains newlines. The above is the only solution i know of when you actually want to have the directory name in a variable. If you just want to execute some command, use xargs.

<span class="pln">find </span><span class="pun">.</span> <span class="pun">-</span><span class="pln">type d </span><span class="pun">-</span><span class="pln">print0 </span><span class="pun">|</span><span class="pln"> xargs </span><span class="pun">-</span><span class="lit">0</span><span class="pln"> echo </span><span class="str">'The directory is: '</span>

Sorgente: How can I escape white space in a bash loop list? – Stack Overflow

Furthermore BASH Shell: For Loop File Names With Spaces suggets:

find . -print0 | while read -d $'\0' file
do
  echo -v "$file"
done

that should handle even the weirdest file name