- it’s easy to hit a Unix command line length limit when a single * argument expands into many arguments. xargs solves that, but it shouldn’t be necessary.
- Unix tools cannot discriminate between * and the list of arguments it expands to. Consequently, rm cannot know whether you typed a single * or the specific list it expands into, so it cannot silently accept the latter and ask ‘are you sure’ for the former.
- “cat foo* > foos” or “grep -r foo * > foos” fill up your disk.
- tools that don’t want to accept file names as input have to do all kinds of escaping to prevent it. For example, you can’t have a calculator that can be invoked with
calc 3 * 4 + 5
(sed, perl or python one-liners suffer the same fate)I think a system library function to do the globbing, etc. would have been the better choice.
I also guess Unix doesn’t have that only because, back in the time globbing was invented, it would make all the executables so much larger.