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
lsda Heirloom Toolchest , uma porta de ferramentas do OpenSolaris:$ heirloom-ls -rt a b c -
A
lsde 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 .