Find
為什麼 find 的輸出在 Cygwin 中排序但在 Solaris 中沒有?
我想知道為什麼
find
在 Solaris 中的行為方式與在 Cygwin 或 Linux 中不同。我有一堆目錄,其中包含名為
CS##########
. 每個#
都是一個數字,但 CS 後面總是有 10 個數字。
find
在 Cygwin 中使用時,列表按順序排列:CS000000001
到CS00002345
. 在 Solaris 中使用find
時,列表完全無序。我想知道這是否實際上與作業系統相關,或者是否是由於 find 的實現。
find
不對其輸出進行排序。文件名的順序取決於目錄條目在文件系統中出現的順序。無論是在 Solaris 還是 Windows 上,您都無法控制它。在某些文件系統上,如果您創建一個目錄並向其中添加文件,這些文件將按照添加的順序出現。這可能是它們在 Windows 下排序的原因。但並非所有地方都是這種情況(例如,我認為 Solaris 的 zfs 上從來沒有這種情況),如果您開始刪除目錄中的文件並添加其他文件,則大多數文件系統的順序是不可預測的。
一些文件系統確實有 predictable ,但大多數沒有。Mac OS/OSX 的 HFS+ 和 Linux 的 Reiserfs 按字節字典順序對文件名進行排序(請注意,程序的區域設置可能有不同的順序)。Linux 的 ext2/ext3/ext4 不排序。這不是你可以指望的東西。
如果您需要來自 的排序輸出
find
,請將其通過管道傳輸到sort
.