find 在 RHEL 上返回奇怪的文件顺序,但在 OSX 上则不然

find 在 RHEL 上返回奇怪的文件顺序,但在 OSX 上则不然

当我进入

find . -iname "[0-9]*.nii"

在我的 OSX 机器上它返回:

./03_Rest_fcMRI/9793_01_03_1.nii
./04_VEMP/9793_01_04_1.nii
./04_VEMP/9793_01_04_2.nii
./05_Tapping/9793_01_05_1.nii
./05_Tapping/9793_01_05_2.nii
./06_Adaptation/9793_01_06_1.nii
./06_Adaptation/9793_01_06_2.nii
./06_Adaptation/9793_01_06_3.nii
./06_Adaptation/9793_01_06_4.nii
./07_SWM/9793_01_07_1.nii
./07_SWM/9793_01_07_2.nii
./07_SWM/9793_01_07_3.nii
./08_Foot_Tapping/9793_01_08_1.nii

当我在 RHEL 上输入同一行代码时,我得到:

./06_Adaptation/9793_01_06_3.nii
./06_Adaptation/9793_01_06_4.nii
./06_Adaptation/9793_01_06_2.nii
./06_Adaptation/9793_01_06_1.nii
./03_Rest_fcMRI/9793_01_03_1.nii
./08_Foot_Tapping/9793_01_08_1.nii
./04_VEMP/9793_01_04_2.nii
./04_VEMP/9793_01_04_1.nii
./07_SWM/9793_01_07_3.nii
./07_SWM/9793_01_07_2.nii
./07_SWM/9793_01_07_1.nii
./05_Tapping/9793_01_05_2.nii
./05_Tapping/9793_01_05_1.nii

OSX 上的文件顺序对我来说似乎是合乎逻辑的。 RHEL 上的则不然。我知道我可以通过管道排序在 RHEL 上获得相同的顺序,但这不是我的问题。

我试图理解为什么 RHEL 上的 find 输出这个非字母数字顺序。

答案1

find 不会对文件进行排序,而是按照找到的顺序列出它们。它还按照找到目录的顺序遍历目录。您不能对顺序做出任何假设,但我相信它是可重复的,因为如果您再次运行 find ,您将得到相同的顺序。

在 Linux 上,文件是不是按字母顺序存储。也许它们在 OSX 上,或者也许它们恰好是按字母顺序创建的。

不排序并不是懒惰或错误,它本来就是这样的。如果要对文件进行排序,则在完成对文件系统的遍历之前将无法输出任何内容,这在许多情况下可能需要几分钟的时间。

相关内容