You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PowerShell中按自然顺序选择并排序Zip文件?

PowerShell实现文件名自然排序的方法

我有这些文件:

Test1.zip
Test2.zip
Test3.zip
Test10.zip
Test11.zip

在PowerShell里执行以下命令时:

Get-ChildItem -Path "c:\temp" -Filter "*.zip" | Sort-Object

得到的是字符串排序结果,数字顺序不符合预期:

Test1.zip
Test10.zip
Test11.zip
Test2.zip
Test3.zip

想要调整成自然数字顺序:

Test1.zip
Test2.zip
Test3.zip
Test10.zip
Test11.zip

解决方法

方法1:针对固定格式文件名(前缀统一)

如果文件名都是类似Test+数字.zip的固定格式,可以直接提取数字部分转成整数排序:

Get-ChildItem -Path "c:\temp" -Filter "*.zip" | Sort-Object { [int]($_.BaseName -replace '[^\d]','') }

原理是通过正则去掉文件名中的非数字字符,提取出数字并转为整数,再按整数大小排序,结果就是自然数字顺序。

方法2:通用自然排序(适配任意含数字的文件名)

如果文件名格式不固定,比如有不同前缀或数字在任意位置,用补零法让字符串排序等价于自然排序:

Get-ChildItem -Path "c:\temp" -Filter "*.zip" | Sort-Object {
    [regex]::Replace($_.Name, '(\d+)', { $matches[1].PadLeft(10, '0') })
}

这个方法会把文件名里的所有数字部分补零到10位长度,比如Test1.zip变成Test0000000001.zip,Test10.zip变成Test0000000010.zip,此时字符串排序就会和自然数字顺序一致。

内容的提问来源于stack exchange,提问作者Melissa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 06:45:03