为什么在linux中查找命令的结果是未排序的?


2

当我做的时候 find 结果显然是随机顺序,不应该按名称排序吗?


3
他们实际上是排序的。不是按字母顺序排列,而是按文件树中的位置...
mveroone

@Kwaio它们是用inode编号排序的吗?
dspjm

我不熟悉inode分配,但我认为不是。想象一下,你正在对树进行深度搜索,按字母顺序排列为第二个排序顺序。这就是你得到的。
mveroone

Answers:


5

要返回排序结果, find 必须找到 一切 在它输出之前 什么 。这会让事情变得更加缓慢。如果需要对结果进行排序,可以通过管道输出来轻松对它们进行排序 findsort


2
将输出管道化为单独的排序工具(但不一定如此) sort )还允许使用任意数量的可能排序算法。如果它是内置的 find 然后你会被困在什么地方 find 报价 要么 仍然 需要单独的排序工具。
a CVn

我实际上知道如何排序,但只是好奇为什么结果没有排序,我认为这需要调查找到用于查找文件的方法。
dspjm

它不需要对一切进行排序。 find 只需要在迭代其内容之前对每个目录进行排序,以便对要排序的结果进行排序。 / ls 比...慢 find 只是因为它在读取目录之后但在列出之前对目录进行了排序。 /原因是在具有目录的无序索引的文件系统上,读取的条目不需要按排序顺序返回,这与DOS及其FAT的方式不同。
Dan D.
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.