Warum werden Dateien mit demselben Zeitstempel nicht alphabetisch sortiert, wenn sie mit "ls -lt" aufgelistet werden?

343
elfryskai

Ich habe gelesen, dass ls -ltDateien nach Änderungszeitpunkt sortiert werden, bevor sie nach lexikografischer Reihenfolge sortiert werden.

Wenn ich jedoch den Befehl mit dieser Syntax verwende, erhalte ich folgendes Ergebnis:

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.onach kommt sorting.o. Warum?

Die Verwendung ls -lTzeigt, dass diese beiden (plus chmod.o) den gleichen Zeitstempel haben:

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: Ich verwende MacOS mit einem APFS-Volume.

1
Welches Dateisystem verwenden Sie hier? (Ich gehe davon aus, dass macOS aufgrund des Namens der Benutzergruppe ist, aber handelt es sich um HFS + oder APFS?) slhck vor 6 Jahren 1
@slhck Ich habe ein APFS-Volume elfryskai vor 6 Jahren 0
Vielleicht ist die Auflösung dieser Zeitstempel besser als eine Sekunde. Was sagt "stat parsing.o sorting.o"? Kamil Maciorowski vor 6 Jahren 0
16777220 3117665 -rw-r - r-- 1 Elfryskai-Mitarbeiter 0 4760 "Aug 20 21:17:54 2018" "19. August 21:07:50 2018" "19. August 21:07:50 2018" "19. August 21 : 07: 50 2018 "4194304 16 0 parsing.o 16777220 3117667 -rw-r - r-- 1 elfryskai staff 0 7140" Aug 19 23:44:10 2018 "" Aug 19 21:07:50 2018 "" Aug. 19 21:07:50 2018 "" 19. August 21:07:50 2018 "4194304 16 0 sorting.o elfryskai vor 6 Jahren 0

1 Antwort auf die Frage

2
slhck

Das neueste Dateisystem von Apple, APFS, speichert Zeitstempel in Nanosekunden statt in Sekunden ( wie bei HFS + üblich ).

Dies erklärt möglicherweise eine andere Sortierung der Dateien, obwohl sie gleichzeitig geändert wurden.

Um dies zu testen, entschuldige ich mein schlampiges 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); } 

Dann:

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

Würde drucken:

Last modified time: 140734785103288 
Ein Hacky-Beispiel wurde hinzugefügt, um die Zeitstempel zu erhalten, die Sie in Ihrem Fall überprüfen können. slhck vor 6 Jahren 0
Danke für den Tipp, Ihr Code hat leider nicht für mich funktioniert, aber durch die Suche nach Dingen habe ich festgestellt, dass st_mtime eine Struktur mit Nanosekunden enthält -> attr.st_mtimespec.tv_nsec. elfryskai vor 6 Jahren 0