4 ms·
If I could need to combine a find|grep right now (this is, if the directory recursion and filters of grep by itself, weren't enough, which maybe a corner case t
by txutxu 11y ago
If I could need to combine a find|grep right now (this is, if the directory recursion and filters of grep by itself, weren't enough, which maybe a corner case too...) I could do it like this:
while IFS= read -rd '' file; do
echo "do whatever with: $file"
grep whatever -- "$file"
done < <(find ~/whatevers -print0)
It's like natural language if you do it daily.
Will handle not only spaces, but also
new
lines
on
file
names.
Have a nice day.
- joosters 11y agoYou miss my point. Of course, for every example I give, it's possible to build a workaround to handle the spaces. My point is, it's the very fact that you need a workaround that makes it so irritating.
- txutxu 11y agoFor me, the code I did give, is not a workaround. It's the canonical way of do it. Other ways, even if they are "expected to work by inexperienced occasional users"... are simply flawed a first eye view. A workaround is to ditch shell script, as soon as you face a problem, and blame shell script, and turn to do it in a "more advanced language" that has the same or more caveats. That could be a workaround. Delimiting file names with null bytes, in case they could be split by any of the $IFS values, is NOT a workaround, is pure logic.