У меня есть имена файлов в следующем формате:
[ignore-prefix]-[important-middle]-[ignore-suffix]-[name-with-digits]
Мне нужно отсортировать по следующим правилам: сначала по средней части, затем по имени, в естественном порядке (т.е. foobar10> foobar2). Я не знаю значения префикса, но я знаю разделитель (тире).
поэтому моя первая попытка, естественно:
filelist | Sort-Object -property @{Expression='
{$_.FullName.SubString($_.FullName.IndexOf("-")+1)}}
При этом возникает проблема, связанная с тем, что суффикс влияет на порядок (ignore-aaa-1ignore-wname) сортируется перед ignore-aaa-2ignore-aname), поэтому:
$filelist | Sort-Object -property @{Expression='
{$_.FullName.SubString($_.FullName.IndexOf("-")+1,'
$_.FullName.SubString($_.FullName.IndexOf("-")+1).IndexOf("-"))}}
Хорошо, что-то вроде середины, но уже громоздко. Если бы я добавил натуральную сортировку, это было бы еще хуже. Какой более элегантный способ сделать это?