Pádraig Brady wrote: > Reuben Thomas wrote: >> On Mon, 25 May 2009, Jim Meyering wrote: >> >>> To do what he wants you have to know that ls -1U is the only >>> way to get one output entry per readdir call. >>> >>> Reuben, you want to do it like this: >>> >>> ls -1U|head|xargs ls -l >> >> Thanks for the hint about -1, but this doesn't seem to make any >> difference: I run "ls -1U|head" in a directory with lots of files (about >> 10,000) and it pauses for a minute or so before giving me my ten lines >> of output. >> >> If I run the command again, then of course it runs almost instantly, so >> I'm not sure what use the loops are in the tests you give. > > With the ls on fedora 8 (coreutils 6.9) I see all the > redundant getdents64() calls when using strace on Jim's command above. > With the latest coreutils I do not.
Right. The change that made ls -1U more efficient was after 6.12 [v6.12-113-g8d974b0]: commit 8d974b00fbbc2025de63e1e6d54827648fefa1c4 Author: Kamil Dudka <kdu...@redhat.com> Date: Wed Jul 30 14:31:50 2008 +0200 ls -U1 now uses constant memory When printing one name per line and not sorting, ls now uses constant memory per directory, no matter how many files are in the directory. * ls.c (print_dir): Print each file name immediately, when possible. * NEWS: Mention the improvement. _______________________________________________ Bug-coreutils mailing list Bug-coreutils@gnu.org http://lists.gnu.org/mailman/listinfo/bug-coreutils