在powershell中对起始编号的字符串列表进行排序

时间:2015-01-09 14:30:30

标签: sorting powershell filenames

我是PowerShell的新手所以非常感谢任何帮助。

我有一个字符串列表(文件名),它们以数字开头,例如。 “1.第一个文件”,“2。第二个文件”......“21。第二十一个文件”。

我希望按照起始编号的顺序对其进行排序。但是,当我执行“$ List | sort {$ _.Name} -Unique”时,它将以“1”开头,然后下一项为“11”。而不是“2”。

请帮忙。

3 个答案:

答案 0 :(得分:1)

这是一种方法:

$test = @('1. First', '2. Second', '11. Eleventh')
$sort = @()
foreach($item in $test){
  $item -match '^(\d+).*'
  $temp = New-Object PSCustomObject -property @{'Number' = [int]$matches[1]}
  $sort += $temp
}
$sort | Sort-Object Number | Select-Object Data

答案 1 :(得分:0)

为了简化先前的答案,您可以这样做:

$test | Sort-Object -Property @{ Expression={[int]$_.substring(0,$_.IndexOf('.'))}; Ascending=$true }

答案 2 :(得分:0)

这是另一种选择:

$col = @(
'1. first file'
'2. second file'
'11. eleventh file'
'21. twenty-first file'
)

$ht = @{}
$col | foreach {$ht[$_ -replace '\D+$'] = $_}
[int[]]$ht.keys | sort | foreach {$ht["$_"] }

1. first file
2. second file
11. eleventh file
21. twenty-first file