Subject: Re: "ls" sorts wrongly if given large number of files
From: Brian Inglis <[email-masked]>
To: [email-masked]
Date: Wed, 6 Jan 2021 11:45:45 -0700
List-Id: General Cygwin discussions and problem reports <cygwin.cygwin.com>

On 2021-01-06 11:17, Kamran via Cygwin wrote:
> "ls" (version 8.26) sorts wrongly if given large number of files via "find" or 
> "xargs"
> 
> For example:
> 
> find -type f -exec ls -oS -h {} +
> 
> OR
> 
> find -type f -print0 | xargs -0r ls -oS -h
> 
> Gives following data. Sorry for the long listing, and wrapped lines. But search 
> for "setup.ini" which is about 17 MB, it is sorted AFTER very small files.
> 
> In fact it seams that sorting is restarted from that file (subsequent files are 
> again sorted). Note also that removing "-h" from "ls" command lines results in 
> the same problem.
> 
> (output is trimmed to remove unnecessary data, i.e. perms/user/date-time, but 
> order is the same)

Shells and programs have limited command line lengths, so the target program may 
be run multiple times by find or xargs, more times when the file path names are 
long, as fewer file path names can fit in each command line, so output line 
lengths from ls and numbers of files sorted together will vary.
You can reduce this impact by changing to the closest common directory to your 
files, and using shell and ls options and features to get similar results e.g.

$ ( cd .../release/; ls -hoS **/*.{tar.*z*,ini}; )

-- 
Take care. Thanks, Brian Inglis, Calgary, Alberta, Canada

This email may be disturbing to some readers as it contains
too much technical detail. Reader discretion is advised.
[Data in binary units and prefixes, physical quantities in SI.]
--
Problem reports:      https://cygwin.com/problems.html
FAQ:                  https://cygwin.com/faq/
Documentation:        https://cygwin.com/docs.html
Unsubscribe info:     https://cygwin.com/ml/#unsubscribe-simple