Я читал, что 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
. Почему?
Использование 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
[...]
EDIT: Я использую MacOS с томом APFS.
решение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