Wodurch wird die Reihenfolge der Dateien bestimmt, wenn ls ohne sort verwendet wird?

Wodurch wird die Reihenfolge der Dateien bestimmt, wenn ls ohne sort verwendet wird?

Die Reihenfolge bei Verwendung lsmit -UFlag ist dieselbe Reihenfolge, die ich erhalte, wenn ich die dirent.h-Bibliothek in C verwende und Dateinamen in einer Schleife anzeige. Wenn ich d_offMitglieder der direntStruktur anzeige, scheinen die Zahlen in aufsteigender Reihenfolge zu sein.

Gibt es einen d_offGrund für die Reihenfolge der Dateien und wenn ja, was ist dieser genau? Ich habe gesehen, dass es als Dateiversatz beschrieben wird, bin mir aber nicht sicher, was das bedeutet.

Dank im Voraus

Antwort1

Aus man 3 readdir:

d_aus
   Der in d_off zurückgegebene Wert ist derselbe, der zurückgegeben würde, wenn telldir(3) an der aktuellen Position im Verzeichnis-Stream aufgerufen würde. Beachten Sie, dass das Feld d_off trotz seines Typs und Namens auf modernen Dateisystemen selten eine Art Verzeichnis-Offset ist. Anwendungen sollten dieses Feld als undurchsichtigen Wert behandeln und keine Annahmen über seinen Inhalt treffen; siehe auch telldir(3).

Mit anderen Worten, d_offund die Bestellungsind dasselbe; es ist die Nummer des Verzeichniseintrags, die vom Dateisystem für dieses Verzeichnis zurückgegeben wird.

Die Reihenfolge wird daher durch das Dateisystem selbst definiert – und das kann einfach (z. B. in einem FAT12-Verzeichnis) oder sehr komplex (z. B. ein Overlay-FS über einem komplexen Dateisystem) sein.

verwandte Informationen