我有目录列表。目录以数字命名。如何通过power shell按数字顺序对目录名进行排序。
Name
-----
1
12
2
答案 0 :(得分:4)
排序顺序基于用于比较的属性的类型。
由于目录的Name
属性属于[string]
类型,因此会按字母顺序排序,在10
之前排名9
(因为第一个字符{{1} }按字母顺序排在字符1
之前。)
要按数字值对数字进行排序,请使用scriptblock(如shown in the comments)或计算表达式将值转换为数字类型:
9
使用Get-ChildItem -Directory | Sort-Object -Property {$_.Name -as [int]}
而不是强制转换可以防止-as
属性无法转换为Name
的对象的异常。 PowerShell 3.0版中引入了[int]
类型运算符,因此对于早期版本,请使用常规强制转换:
-as