使用PowerShell按目录名称排序

7
我有一组目录,这些目录的名称是数字。如何通过PowerShell将目录名称按数字顺序排序。
Name
-----
1
12
2

4
按照名称进行排序 {[int]$_.Name}。 - user4003407
请按照Windows资源管理器的方式按文件名排序。 - David Brabant
1个回答

10

排序顺序基于用于比较的属性的类型

由于您的目录的Name属性是[string]类型,因此按字母顺序排序,这使得10排在9之前(因为字母表顺序中第一个字符1在字符9之前)。

要按数字值对数字进行排序,请使用脚本块(如评论中所示)或计算表达式将其转换为数字类型:

Get-ChildItem -Directory | Sort-Object -Property {$_.Name -as [int]}

使用-as而不是强制类型转换可以避免在对象的Name属性无法转换为[int]时引发异常。 -as类型运算符是PowerShell 3.0版本引入的,因此对于早期版本,请使用常规强制转换:

Get-ChildItem -Directory | Sort-Object -Property {[int]$_.Name}

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