GNU bug report logs -
#71803
ls --time=mtime is sorting by name instead of mtime
Previous Next
Reported by: Dave <dmisc2 <at> gmail.com>
Date: Thu, 27 Jun 2024 15:21:02 UTC
Severity: normal
Done: Pádraig Brady <P <at> draigBrady.com>
Bug is archived. No further changes may be made.
Full log
View this message in rfc822 format
[Message part 1 (text/plain, inline)]
Your bug report
#71803: ls --time=mtime is sorting by name instead of mtime
which was filed against the coreutils package, has been closed.
The explanation is attached below, along with your original report.
If you require more details, please reply to 71803 <at> debbugs.gnu.org.
--
71803: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=71803
GNU Bug Tracking System
Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
[Message part 3 (text/plain, inline)]
On 27/06/2024 16:05, Dave wrote:
> The ls command without the -l option and with the --time=mtime option,
> is incorrectly sorting by the name rather than by the modification
> time.
>
> ls # sorts by name (ok)
> ls --time=mtime # sorts by name (should sort by mtime)
> // The current statement in ls.c (lines 2383-2387)
> sort_type = (0 <= sort_opt ? sort_opt
> : (format != long_format
> && (time_type == time_ctime || time_type == time_atime
> || time_type == time_btime))
> ? sort_time : sort_name);
>
> // Proposed correction (untested)
> sort_type = (0 <= sort_opt ? sort_opt
> : (format != long_format
> && (time_type == time_ctime || time_type == time_atime
> || time_type == time_btime || time_type == time_mtime))
> ? sort_time : sort_name);
Right, we should be applying this GNU extension to --time=mtime also.
I.e. sorting when not displaying time (-l not specified),
and no other sorting specific option is used.
The proposed fix wouldn't work as time_mtime is the default,
so we'd be sorting by mtime rather than name by default.
I'll apply the attached later to address this.
Marking this as done.
thanks,
Pádraig
[ls--time=mtime-sort.diff (text/x-patch, attachment)]
[Message part 5 (message/rfc822, inline)]
The ls command without the -l option and with the --time=mtime option,
is incorrectly sorting by the name rather than by the modification
time.
ls # sorts by name (ok)
ls --time=mtime # sorts by name (should sort by mtime)
ls --time=ctime # sorts by ctime (ok)
ls --time=atime # sorts by atime (ok)
ls --time=birth # sorts by birth (ok)
ls -c # sorts by ctime (ok)
ls -c --time=mtime # sorts by name (should sort by mtime)
ls -c --time=ctime # sorts by ctime (ok)
ls -c --time=atime # sorts by atime (ok)
ls -c --time=birth # sorts by birth (ok)
ls -u # sorts by atime (ok)
ls -u --time=mtime # sorts by name (should sort by mtime)
ls -u --time=ctime # sorts by ctime (ok)
ls -u --time=atime # sorts by atime (ok)
ls -u --time=birth # sorts by birth (ok)
// The current statement in ls.c (lines 2383-2387)
sort_type = (0 <= sort_opt ? sort_opt
: (format != long_format
&& (time_type == time_ctime || time_type == time_atime
|| time_type == time_btime))
? sort_time : sort_name);
// Proposed correction (untested)
sort_type = (0 <= sort_opt ? sort_opt
: (format != long_format
&& (time_type == time_ctime || time_type == time_atime
|| time_type == time_btime || time_type == time_mtime))
? sort_time : sort_name);
ls (GNU coreutils) 9.4
Linux 6.8.0-31-generic #31-Ubuntu SMP PREEMPT_DYNAMIC Sat Apr 20
00:40:06 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
This bug report was last modified 325 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.