猿问

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

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

这是应用于powershell的“ASCIIbetical”命令与“Natural”命令的着名问题。为了能够以与资源管理器相同的方式对powershell进行排序,您可以在StrCmpLogicalW API上使用此包装器,它实际上为Windows资源管理器执行自然排序。这需要一些管道。

但是,这篇文章表明在python中有一个三线程实现的排序。人们希望Get-ChildItem cmdlet或至少文件系统提供程序可以具有内置的自然排序选项。不幸的是,他们没有。

所以这是一个问题,Powershell中最简单的实现是什么?简单来说,我的意思是编写的代码量最少,可能没有第三方/外部脚本/组件。理想情况下,我想要一个简短的 Powershell函数来为我做排序。


米琪卡哇伊
浏览 1540回答 3
3回答

繁花如伊

下面是一些非常简短的代码(只是$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 order1.txt10.txt3.txta10b1.txta1b1.txta2b1.txta2b11.txta2b2.txtb1.txtb10.txtb2.txt----- test 2 input with padded numbers                   1.txt                  10.txt                   3.txta                  10b                   1.txta                   1b                   1.txta                   2b                   1.txta                   2b                  11.txta                   2b                   2.txtb                   1.txtb                  10.txtb                   2.txt----- test 3 Natural order: sorted with padded numbers1.txt3.txt10.txta1b1.txta2b1.txta2b2.txta2b11.txta10b1.txtb1.txtb2.txtb10.txt最后我们使用这个单行按照自然顺序按名称对文件进行排序:Get-ChildItem | Sort-Object { [regex]::Replace($_.Name, '\d+', { $args[0].Value.PadLeft(20) }) }输出:    Directory: C:\TEMP\_110325_063356Mode                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            
随时随地看视频慕课网APP
我要回答