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