在PowerShell中,Get-ChildItem命令的默认结果集排序是什么?

10

在PowerShell的Get-ChildItem命令中,结果集的默认顺序是什么? 是否有顺序,还是随机的,每次都会以不同的顺序给出结果。

3个回答

13

没有保证的默认排序顺序。 文档 没有说明。

FileSystemProvider 中的实现最终会调用DirectoryInfo.GetFiles。该文档说明如下:

返回的文件名的顺序不能保证; 如果需要特定的排序顺序,请使用 Sort 方法。

底层API调用是 Find­First­FileFindNextFile。 Raymond Chen 在这里解释,实际上文件系统驱动程序可能会遵循一些排序规则,但不应依赖于此。


1
与“dir”命令类似,它还使用了“FindFirstFile”和“FindNextFile”:如果未指定排序顺序,DIR命令如何排列文件?Windows控制台中“dir”命令的默认文件顺序 - phuclv

4

默认排序对我不起作用。我得到的结果是:

Mode                LastWriteTime     Length Name
----                -------------     ------ ----
d----        2015-10-12     10:51            tools
d----        2015-10-12     10:58            cfg
d----        2015-10-12     10:51            res
d----        2015-10-12     10:50            brand
d----        2015-10-12     10:51            lib

我不记得更改排序顺序了。我使用的是Windows 7 SP1操作系统。如果我需要排序结果,我必须执行ls | sort命令。


正如上面所说,这是因为Get-ChildItem不会对其项目进行排序。 - phuclv

-1
First folders in alphanumeric order (first numbers as [char]).
Then files in alphanumeric order (first numbers as [char]).

1
这是错误的。您能给这个提供一个报价吗? - phuclv

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接