我有 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() 读取文件名的顺序取决于文件系统的实现;这些名字不太可能以任何方式排序。
这意味着您获得响应的顺序实际上取决于文件系统,并且您不能期望任何顺序。您很可能获得条目在目录结构中存储的顺序,并且由于磁盘的布局方式,一个系统与下一个系统的顺序不会相同。