bug-coreutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: ls -l|head seems to look at all files in directory


From: Jim Meyering
Subject: Re: ls -l|head seems to look at all files in directory
Date: Mon, 25 May 2009 17:51:13 +0200

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 <address@hidden>
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.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]