| ▲ | db48x 12 hours ago |
| > Or maybe you pipe into xargs and pray your filenames don’t have spaces… Always use -0. Most gnu utilities support it. It makes them put a null byte after every filename instead of a newline. Completely eliminates the problem of dealing with whitespace in the filenames. |
|
| ▲ | AdieuToLogic 12 hours ago | parent | next [-] |
| To support your recommendation and redress the strawman the article postulates, the post's author could have replaced: find . -name '*.log' | xargs rm
With: find . -name '*.log' -print0 | xargs -0 rm
|
| |
| ▲ | tjalfi 3 hours ago | parent [-] | | This one doesn't need xargs. find . -name '*.log' -delete
| | |
| ▲ | sgarland 3 hours ago | parent [-] | | THANK YOU. I kept nodding along to all of the xargs comments, thinking “sure, but what about the even easier solution?” |
|
|
|
| ▲ | dieulot 2 hours ago | parent | prev | next [-] |
| No dependency on GNU required anymore, POSIX 2024 supports it: https://blog.toast.cafe/posix2024-xcu#the-null-option |
|
| ▲ | jsrcout 8 hours ago | parent | prev [-] |
| For tools that don't support -0, you can add the NULs yourself without much fuss. It's a one-liner in awk/perl/sed. Very handy. |
| |
| ▲ | ykonstant 6 hours ago | parent [-] | | If you do not have -0 options in your xargs/find, I wonder if you will have those extensions in your awk/sed. Perl is a different story. | | |
| ▲ | MrDOS 4 hours ago | parent [-] | | I think the parent was referring to using awk/sed to do the equivalent of: find ... | tr '\n' '\0' | xargs -0 ...
I.e., a blind replacement without the tool having any particular semantic understanding of what it's translating.That still requires your xargs to have -0 support, though, and I'd be surprised to have that without the corresponding option on find. But I've done this before when feeding xargs from something other than find. | | |
| ▲ | mr_mitm 22 minutes ago | parent [-] | | It is also built on the assumption that filenames never contain newlines, which is wrong in general. It's baffling to me that POSIX allows non-printable characters in file names, but here we are. Surely they had a reason for this decision. |
|
|
|