【发布时间】:2013-03-26 07:49:58
【问题描述】:
Powershell 中 Get-ChildItem 命令的结果集默认顺序是什么? 是否有一个顺序,或者它只是随机的,并且每次都会以不同的顺序给出结果。
【问题讨论】:
Powershell 中 Get-ChildItem 命令的结果集默认顺序是什么? 是否有一个顺序,或者它只是随机的,并且每次都会以不同的顺序给出结果。
【问题讨论】:
没有保证的默认排序顺序。 The documentation 没有声明一个。
FileSystemProvider 中的实现最终调用DirectoryInfo.GetFiles。该状态的文档
不保证返回文件名的顺序;使用排序 方法,如果需要特定的排序顺序。
底层 API 调用是 FindFirstFile 和 FindNextFile。 Raymond Chen explains here 在实践中文件系统驱动程序可能会遵守一些排序规则,但这不应该被依赖。
【讨论】:
dir 相同,也使用FindFirstFile 和FindNextFile:What order does the DIR command arrange files if no sort order is specified?, Default file order of “dir” command in Windows console
默认排序对我不起作用。我明白了:
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 没有对其项目进行排序,如上所述
First folders in alphanumeric order (first numbers as [char]).
Then files in alphanumeric order (first numbers as [char]).
【讨论】: