python按文件名排序_如何按照Windows资源管理器的方式按文件名排序?

下面是一些非常简短的代码(只是$ToNatural脚本块),它使用正则表达式和匹配赋值器来处理带有空格的数字。然后我们像往常一样用填充数字对输入进行排序,结果实际上得到了自然顺序。

$ToNatural = { [regex]::Replace($_, '\d+', { $args[0].Value.PadLeft(20) }) }

'----- test 1 ASCIIbetical order'

Get-Content list.txt | Sort-Object

'----- test 2 input with padded numbers'

Get-Content list.txt | %{ . $ToNatural }

'----- test 3 Natural order: sorted with padded numbers'

Get-Content list.txt | Sort-Object $ToNatural

输出:

----- test 1 ASCIIbetical order

1.txt

10.txt

3.txt

a10b1.txt

a1b1.txt

a2b1.txt

a2b11.txt

a2b2.txt

b1.txt

b10.txt

b2.txt

----- test 2 input with padded numbers

1.txt

10.txt

3.txt

a                  10b                   1.txt

a                   1b                   1.txt

a                   2b                   1.txt

a                   2b                  11.txt

a                   2b                   2.txt

b                   1.txt

b                  10.txt

b                   2.txt

----- test 3 Natural order: sorted with padded numbers

1.txt

3.txt

10.txt

a1b1.txt

a2b1.txt

a2b2.txt

a2b11.txt

a10b1.txt

b1.txt

b2.txt

b10.txt

最后我们使用这个单行按照自然顺序按名称对文件进行排序:

Get-ChildItem | Sort-Object { [regex]::Replace($_.Name, '\d+', { $args[0].Value.PadLeft(20) }) }

输出:

Directory: C:\TEMP\_110325_063356

Mode                LastWriteTime     Length Name

----                -------------     ------ ----

-a---        2011-03-25     06:34          8 1.txt

-a---        2011-03-25     06:34          8 3.txt

-a---        2011-03-25     06:34          8 10.txt

-a---        2011-03-25     06:34          8 a1b1.txt

-a---        2011-03-25     06:34          8 a2b1.txt

-a---        2011-03-25     06:34          8 a2b2.txt

-a---        2011-03-25     06:34          8 a2b11.txt

-a---        2011-03-25     06:34          8 a10b1.txt

-a---        2011-03-25     06:34          8 b1.txt

-a---        2011-03-25     06:34          8 b2.txt

-a---        2011-03-25     06:34          8 b10.txt

-a---        2011-03-25     04:54         99 list.txt

-a---        2011-03-25     06:05        346 sort-natural.ps1

-a---        2011-03-25     06:35         96 test.ps1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值