DeepDeadpool Asked: 2019-03-07 12:45:22 +0800 CST2019-03-07 12:45:22 +0800 CST 2019-03-07 12:45:22 +0800 CST 为什么 find 在 CentOS 和 RHEL 上显示不同的顺序? 772 我有两台不同的机器——一台运行 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 时,我的结果列表以相反的顺序排列。 为什么是这样? rhel centos 2 个回答 Voted Best Answer Kusalananda 2019-03-07T13:00:50+08:002019-03-07T13:00:50+08:00 find遍历其搜索路径的目录结构的顺序可能是库函数readdir()返回目录条目的顺序。这些条目没有进一步排序,find因此可能取决于创建目录条目的顺序文件系统,甚至可能是同一分区上其他文件和目录的创建和删除顺序,具体取决于文件系统的实现。 您将在 的输出中得到相同的排序ls -f。 jsbillings 2019-03-10T11:20:44+08:002019-03-10T11:20:44+08:00 根据readdir()的手册页 连续调用 readdir() 读取文件名的顺序取决于文件系统的实现;名称不太可能以任何方式排序。 这意味着您获得响应的顺序实际上取决于文件系统,您不能指望任何顺序。很可能您获得了条目在目录结构中的存储顺序,并且由于磁盘的布局方式,从一个系统到下一个系统的顺序并不相同。
find
遍历其搜索路径的目录结构的顺序可能是库函数readdir()
返回目录条目的顺序。这些条目没有进一步排序,find
因此可能取决于创建目录条目的顺序文件系统,甚至可能是同一分区上其他文件和目录的创建和删除顺序,具体取决于文件系统的实现。您将在 的输出中得到相同的排序
ls -f
。根据readdir()的手册页
这意味着您获得响应的顺序实际上取决于文件系统,您不能指望任何顺序。很可能您获得了条目在目录结构中的存储顺序,并且由于磁盘的布局方式,从一个系统到下一个系统的顺序并不相同。