When looping recursively through folders with files containing spaces the shell script I use is of this form, copied from the internet:
while IFS= read -r -d $'\0' file; do
dosomethingwith "$file" # do something with each file
done < <(find /bar -name *foo* -print0)
I think I understand the IFS bit, but I don’t understand what the ‘< <(...)‘ characters mean. Obviously there’s some sort of piping going on here.
It’s very hard to Google "< <" or "<(", you see. I tried "angle bracket parenthesis" and "less-than parenthesis" but didn’t find anything.
<()is called process substitution in the manual, and is similar to a pipe but passes an argument of the form/dev/fd/63instead of using stdin.<reads the input from a file named on command line.Together, these two operators function exactly like a pipe, so it could be rewritten as