我有一组目录,这些目录的名称是数字。如何通过PowerShell将目录名称按数字顺序排序。
Name
-----
1
12
2
Name
-----
1
12
2
排序顺序基于用于比较的属性的类型。
由于您的目录的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}