Isso depende muito da implementação de ls
. Desses 4 encontrados em um sistema GNU / Linux aqui:
$ 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
-
GNU
ls
, aquele do projeto GNU (de a coleção GNU coreutils ). Essa é a única normalmente encontrada em sistemas GNU como o Debian (kernels Linux ou kFreeBSD), Cygwin ou Fedora.$ gnu-ls -rt a c b
-
A
ls
da Heirloom Toolchest , uma porta de ferramentas do OpenSolaris:$ heirloom-ls -rt a b c
-
A
ls
de a coleção de código aberto AT & T , possivelmente criada emksh93
. Outro com algumas extensões sofisticadas:$ 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 encontrado (ou derivado) na maioria dos sistemas baseados em Linux (geralmente incorporados):
$ busybox ls -rt c b a
Então, desses, GNU e ast ls
consideram a segunda parte fracionária. Os outros recorrem à comparação lexical para arquivos modificados pela última vez no mesmo segundo. Somente busybox ls
respeita o -r
.
Em meus testes, o ls
do FreeBSD também suporta precisão de sub-segundo (desde que eles estejam habilitados no nível do VFS, veja vfs.timestamp_precision
sysctl).
zsh
(com o qualificador om
glob para encomendar na hora da modificação, Om
para a ordem inversa) também levam o tempo todo:
$ echo *(Om)
a c b
[ file1 -nt file2 ]
, em que o suporte também geralmente suporta granularidade abaixo de um segundo .