「ls -lt」を使用してリストしたときに、同じタイムスタンプを持つファイルがアルファベット順に並べられないのはなぜですか?

「ls -lt」を使用してリストしたときに、同じタイムスタンプを持つファイルがアルファベット順に並べられないのはなぜですか?

ls -lt辞書順で並べ替える前に、ファイルを変更時間順に並べ替えると読みました。

ただし、この構文でコマンドを使用すると、次の結果が得られます。

ls -lt
total 192
-rw-r--r--  1 elfryskai  staff  6988 Aug 20 21:17 sorting_files.o
-rw-r--r--  1 elfryskai  staff  4416 Aug 20 20:56 sorting_dirs.o
-rw-r--r--  1 elfryskai  staff  6552 Aug 20 15:12 lists.o
-rw-r--r--  1 elfryskai  staff  7692 Aug 20 15:12 printing.o
-rw-r--r--  1 elfryskai  staff  7868 Aug 20 01:05 assets.o
-rw-r--r--  1 elfryskai  staff  5344 Aug 20 01:05 freeing.o
-rw-r--r--  1 elfryskai  staff  4860 Aug 20 01:05 reversing.o
-rw-r--r--  1 elfryskai  staff  8028 Aug 20 01:04 listing.o
-rw-r--r--  1 elfryskai  staff  2620 Aug 19 23:24 errors.o
-rw-r--r--  1 elfryskai  staff  3096 Aug 19 23:24 main.o
-rw-r--r--  1 elfryskai  staff  5564 Aug 19 21:07 chmod.o
-rw-r--r--  1 elfryskai  staff  7140 Aug 19 21:07 sorting.o
-rw-r--r--  1 elfryskai  staff  4760 Aug 19 21:07 parsing.o

parsing.oは の後に来ますsorting.o。なぜですか?

を使用すると、これら 2 つ (および) は同じタイムスタンプを持つことls -lTがわかります。chmod.o

ls -lT
total 192
[...]
-rw-r--r--  1 elfryskai  staff  5564 Aug 19 21:07:50 2018 chmod.o
[...]
-rw-r--r--  1 elfryskai  staff  4760 Aug 19 21:07:50 2018 parsing.o
[...]
-rw-r--r--  1 elfryskai  staff  7140 Aug 19 21:07:50 2018 sorting.o
[...]

編集: APFS ボリュームを使用して MacOS を実行しています。

答え1

Appleの最新のファイルシステムであるAPFSは、タイムスタンプを秒ではなくナノ秒単位で保存します(HFS+がかつて)。

これにより、ファイルは同時に変更されたように見えても、ファイルの並べ替えが異なることが説明できます。

それをテストするために、私のずさんな C を許してください:

#include <stdio.h>
#include <sys/stat.h>

int main() {
    struct stat attr;
    stat("/path/to/file", &attr);
    printf("Last modified time: %ld", (long)&attr.st_mtime);
}

それから:

gcc -o test.o test.c && test.o

次のように印刷されます:

Last modified time: 140734785103288

関連情報