为什么 find 在 CentOS 和 RHEL 上显示不同的顺序?

为什么 find 在 CentOS 和 RHEL 上显示不同的顺序?

我有 2 台不同的机器 - 一台运行 RHEL7,一台运行 CentOS-7.5。

find --version每个报告版本 4.5.11。

我在每个目录上创建了以下目录结构。

./dir/some-file
./.hidden/dir/some-file

当我find -name some-file在 RHEL7 机器上运行时,我得到与上面匹配的输出。

但是当我在 CentOS-7.5 机器上运行 find 时,结果列表以相反的顺序排列。

为什么是这样?

答案1

遍历其搜索路径的目录结构的顺序find可能就是readdir()函数返回目录条目。这些条目不会进一步排序find,因此可能取决于文件系统中创建目录条目的顺序,甚至可能取决于同一分区上其他文件和目录的创建顺序并删除,具体取决于文件系统的实现。

您将在 的输出中得到相同的顺序ls -f

答案2

根据手册页读目录()

连续调用 readdir() 读取文件名的顺序取决于文件系统的实现;这些名字不太可能以任何方式排序。

这意味着您获得响应的顺序实际上取决于文件系统,并且您不能期望任何顺序。您很可能获得条目在目录结构中存储的顺序,并且由于磁盘的布局方式,一个系统与下一个系统的顺序不会相同。

相关内容