3 ms·
I have used production batch processing systems that routinely store enough files that ls *5* will fail because the argument list was too big for execve(2).
by prodigal_erik 17y ago
I have used production batch processing systems that routinely store enough files that
ls *5*
will fail because the argument list was too big for execve(2). Would I design it that way? No, but people do (sometimes without really thinking about it), and you still have to get work done.
New users should be taught find(1) because it always works.
- greyboy 17y agoRight, I understand the problem. Find and xargs can do wonders. However, that's usually an edge case (in my professional experience). I'm certainly not proclaiming the advanced-ness of 'ls' in this circumstance. However, in the example in the article, he was using "ls" piped to "grep" in order to find all files with a 5 in the name. That would suffer from the same consequences you mentioned, on such systems, and is inefficient and verbose. Note, I agree with your advice to teach "find" (and "xargs") to users.
- prodigal_erik 17y agoTrue, ls | grep 5 is reliable where ls *5* is not. (Well, except for awful names that require "find -print0", or preferably having the file taken out and shot along with its creator.) I'm actually not a fan of xargs. It's more unixy, but somehow I find its options hard to remember. Off the top of my head I find it easier to do find -exec blah {} +