I'm starting bash scripting and i can't handle spaced filename. I searched other questions about my problem here, like:
how to output file names surrounded with quotes in SINGLE line?
In my script i need to take all directorys, end for each one doing some work. So the skeleton of my script is:
for directory in `find "$DIR" -type d`
do
# ... some work ...
done
This script, doesn't work with spaced filename. So i tried using find in combination with exec, that seems an elegant and easy solution, but nothing changed. More precisely i tried:
(I) find "$DIR" -type d -exec echo -n '"{}" ' \;
(II) find "$DIR" -type d -exec echo -n '"{}" ' +
Before using the command -exec i read something about it, but something is still not clear to me, so:
- What's and how works '"{}" ' \;
- What's and how works '"{}" ' +
- How can i fix my script also for spaced filename?