Eso depende mucho de la ls
implementación. De los 4 encontrados en un sistema GNU / Linux aquí:
$ touch a; touch c; touch b; stat -c %y a c b
2018-01-10 12:52:21.367640342 +0000
2018-01-10 12:52:21.371640148 +0000
2018-01-10 12:52:21.375639952 +0000
GNUls
, el del proyecto GNU (de la colección GNU coreutils ). Ese es el que generalmente se encuentra en los sistemas GNU como Debian (kernels Linux o kFreeBSD), Cygwin o Fedora.
$ gnu-ls -rt
a c b
El ls
de Heirloom Toolchest , un puerto de herramientas OpenSolaris:
$ heirloom-ls -rt
a b c
El ls
de la colección AT&T Open Source , posiblemente integrado ksh93
. Otro con bastantes extensiones elegantes:
$ ast-ls -rt
a c b
$ PATH=/opt/ast/bin:$PATH ksh93 -c 'type ls; ls -rt'
ls is a shell builtin version of /opt/ast/bin/ls
a c b
busybox (como se encuentra (o un derivado) en la mayoría de los sistemas basados en Linux (generalmente integrados):
$ busybox ls -rt
c b a
Entonces, de esos, GNU y ast ls
consideran la segunda parte fraccionaria. Los otros recurren a la comparación léxica para los archivos modificados por última vez en el mismo segundo. Solo busybox ls
rinde homenaje al -r
allí.
En mis pruebas, FreeBSD ls
también admite precisión de menos de un segundo (siempre que estén habilitadas en el nivel VFS, consulte vfs.timestamp_precision
sysctl).
zsh
Los globs (con el om
calificador glob para ordenar en el tiempo de modificación, Om
para el orden inverso) también toman el tiempo completo:
$ echo *(Om)
a c b
[ file1 -nt file2 ]
, Donde apoyado también en general apoyar granularidad sub-segundo .