Filesystems

什麼決定了在不使用排序的情況下使用 ls 時文件的排序方式?

  • October 23, 2021

使用lswith -Uflag 時的順序與我在 C 中使用 dirent.h 庫並在循環中顯示文件名時得到的順序相同。當我顯示結構的d_off成員時,dirent數字似乎是按升序排列的。

文件順序的原因是d_off什麼,如果是的話,它到底是什麼?我看到它被描述為文件偏移量,但我不確定這意味著什麼。

提前致謝

來自man 3 readdir

d_off d_off

   中返回的值與在目錄流中的目前位置呼叫telldir(3) 所返回的值相同。請注意,儘管它的類型和名稱,d_off 欄位很少是現代文件系統上的任何類型的目錄偏移量。應用程序應該將此欄位視為一個不透明的值,對其內容不做任何假設;另請參見telldir(3)。

換句話說,d_off和 ordering是一回事;它是文件系統為該目錄返回的目錄條目的編號。

因此,排序由文件系統本身定義 - 這可能很簡單(例如,在 FAT12 目錄中)或非常複雜(例如,某個複雜文件系統上的 overlayFS)。

引用自:https://unix.stackexchange.com/questions/674504