Laut der Manpage für ls ls -U
bedeutet dies:
sortiere nicht; Listeneinträge in Verzeichnisreihenfolge.
Was bedeutet "Verzeichnisreihenfolge" und wie wird sie bestimmt?
Der folgende Test (ausgeführt auf einem ext3-Dateisystem) zeigt, dass es nicht die Reihenfolge ist, in der die Dateien erstellt wurden:
root@sv1010vm0007:/tmp# mkdir test
root@sv1010vm0007:/tmp# touch test/2
root@sv1010vm0007:/tmp# touch test/1
root@sv1010vm0007:/tmp# touch test/3
root@sv1010vm0007:/tmp# ls -U test
2 3 1
quelle
In der Tat gibt es keine bestimmte Reihenfolge zu erwarten. Es liegt an der Implementierung des Betriebssystems und des Dateisystems, die Einträge nach Belieben zu ordnen. Ein Ziel dieser Option ist es, eine schnellere Auflistung zu erreichen, was bei sehr großen Verzeichnissen ein wesentlicher Faktor sein kann.
quelle
In dieser Reihenfolge werden die Einträge intern im Dateisystem gespeichert. Dies variiert von Dateisystem zu Dateisystem. Zum Beispiel können die Entire in einer Art ausgeglichenem Baum gespeichert werden, wie zum Beispiel einem Rot-Schwarz-Baum . Es kann weitere Optimierungen für Verzeichnisse mit einer geringen Anzahl von Einträgen geben, oder um Hinzufügungen und Entfernungen effizient zu behandeln.
quelle
Directory ist nur eine andere Datei, in der die Metadaten der tatsächlichen Dateien aufgelistet sind. "ls -U" listet nur die Einträge in der gleichen Reihenfolge in der Verzeichnisdatei auf.
Die Reihenfolge wird vom Betriebssystem und der Dateisystem-Implementierung bestimmt.
quelle