按大小排序所有文件夹中的所有文件

时间:2016-06-09 02:25:28

标签: powershell

使用PowerShell,如何按大小排序所有文件夹中的所有文件?每当我使用Get-ChildItem的结果时,即使将其保存到变量并进行修改,它也会按目录对所有文件进行分组。即使这样,文件也不会在每个目录中排序。

$files = Get-ChildItem -File -Filter *.bat -Path C:\git -Recurse
Sort-Object -InputObject $files -Property Length

2 个答案:

答案 0 :(得分:4)

我猜你正在进入System.IO.FileInfo的默认显示模式,它会在每次更改时显示空行和目录名称。它也需要永远显示,因为Mode列的优化程度特别差。

尝试这样的事情:

Get-ChildItem -File -Filter *.bat -Path C:\git -Recurse |
    Sort-Object -Property Length |
    Select-Object -Property Length, Name |
    Format-Table -AutoSize

答案 1 :(得分:3)

还没有评论的评论(所以我希望这可以通过stackoverflows礼仪来解决),但是通过切换Select-Object和Sort-Object可以改善Bacon Bits的答案:

Get-ChildItem -File -Filter *.bat -Path C:\git -Recurse | Select-Object -Property Length, Name | Sort-Object -Property Length | Format-Table -AutoSize

这将提高性能,特别是在大型文件系统上(如果我在C驱动器上使用上述代码,大约50%)