5 ms·
> A pain point in for loops is getting that right, e.g. there isn’t a good way to iterate over files with spaces in them using a for loop If those files came a
by jolmg 5y ago
> A pain point in for loops is getting that right, e.g. there isn’t a good way to iterate over files with spaces in them using a for loop
If those files came as arguments, you can use a for-loop as long as they're kept in an array:
for f in "${files[@]}";
That handles even newlines in the filenames, while I'm not sure if you can handle that with a while-read-loop. IFS=$'\0' doesn't seem to cut it.
for-loops seem preferable for working with filenames. If a command is generating the list, then something like `xargs -0` is preferable.
- edgyquant 5y agoMy problem was that I had a directory with probably 200+ subdirectories each one, and the files and subdirectories below them, had a couple of spaces in the name. I typically use for f in ‘ls’; For operations like that but it was obviously built on windows (but I run steam on Ubuntu) and I never interact with windows so tbh I had never thought of this problem before.