3 ms·
xargs is very powerful when you want to run one command with many arguments, but each argument is newline-delimited. That's basically all I use it for, and it s
by jschwartzi 11y ago
xargs is very powerful when you want to run one command with many arguments, but each argument is newline-delimited. That's basically all I use it for, and it saves me a lot of looping and subshell creation.
For example, when purging backups from Mercurial after a revert:
find . -name *.orig | xargs rm
- icebraining 11y agoBut that's exactly it - if any of the filenames have spaces, that will fail, since xargs will try to delete each part separately. From the man page: Because Unix filenames can contain blanks and newlines, this default behaviour is often problematic; filenames containing blanks and/or newlines are incorrectly processed by xargs.
- johnwfinigan 11y agoExcluding filenames containing newlines, I wonder how many weird corner cases this would reveal: ls | tr '\n' '\0' | xargs -0 rm I've been annoyed by ls and xargs not playing together here and there, but the above only just occurred to me. Not sure if it's a good idea yet or not!
- zb 11y agofind . -name '*.orig' -delete