小编Den*_*ing的帖子

PowerShell中的自定义排序

我是动力贝壳的新手.

我的问题是我有以下格式的文件名:

[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

13
推荐指数
1
解决办法
6228
查看次数

标签 统计

powershell ×1