我是动力贝壳的新手.
我的问题是我有以下格式的文件名:
[ignore-prefix]-[important-middle]-[ignore-suffix]-[name-with-digits]
Run Code Online (Sandbox Code Playgroud)
我需要按照以下规则排序:首先按中间部分,然后按名称按自然顺序排序(即foobar10> foobar2).我不知道前缀值,但我知道分隔符(破折号).
所以我的第一次尝试,自然:
filelist | Sort-Object -property @{Expression=`
{$_.FullName.SubString($_.FullName.IndexOf("-")+1)}}
Run Code Online (Sandbox Code Playgroud)
这有一个问题,后缀影响顺序(ignore-aaa-1ignore-wname)在ignore-aaa-2ignore-aname之前排序,所以:
$filelist | Sort-Object -property @{Expression=`
{$_.FullName.SubString($_.FullName.IndexOf("-")+1,`
$_.FullName.SubString($_.FullName.IndexOf("-")+1).IndexOf("-"))}}
Run Code Online (Sandbox Code Playgroud)
好吧,那个在中间排序,但已经不合时宜了.如果我要添加更糟糕的自然类型.这样做更优雅的方式是什么?
powershell ×1