【问题标题】:Group powershell search results by folder按文件夹分组 powershell 搜索结果
【发布时间】:2014-10-09 14:43:59
【问题描述】:

我正在尝试使用 powershell 做一些相对简单的事情,将文件夹及其下的子文件夹的内容打印到文本文件中。在我的搜索中,我发现了这个页面:http://blogs.technet.com/b/heyscriptingguy/archive/2014/02/03/list-files-in-folders-and-subfolders-with-powershell.aspx

这给了我一个我需要的命令示例:Get-ChildItem -Path E:\music\Santana -Recurse -File | sort length –Descending 除非显示搜索结果,它会将一个文件夹和一个子文件夹的内容分成 4 个不同的部分。即您可以在示例页面中看到“e:music\Satana\Shape Shifter”分为两个不同的部分。

我如何“重新分组”搜索结果,如果我想显示一个包含一个子文件夹的文件夹,它会按文件夹分组?

【问题讨论】:

    标签: powershell windows-server-2008


    【解决方案1】:
    Get-ChildItem -Path $yourPath -Recurse -File | Sort-Object -Property Length -Descending | Group-Object -Property Directory | ForEach-Object { $_.Group }
    

    工作原理

    您已经熟悉前 2 个管道段,让我们看看最后 2 个:

    Group-Object

    我们根据Directory 属性对结果进行分组。这为我们提供了我们需要的分组(在没有 ForEach-Object 的情况下运行它以查看它返回的内容)。

    For-EachObject

    这里我们只是遍历每个分组,并返回组(它本身就是单个文件对象的集合)。

    显示特定的子文件夹:

    Get-ChildItem -Path $yourPath -Recurse -File | Sort-Object -Property Length -Descending | Group-Object -Property Directory | Where-Object { $_.Name -ieq E:\Music\Artist\Whatever } | Select-Object -ExpandProperty Group
    

    或仅匹配路径的最后一部分:

    Get-ChildItem -Path $yourPath -Recurse -File | Sort-Object -Property Length -Descending | Group-Object -Property Directory | Where-Object { ($_.Name | Split-Path -Leaf) -ieq Whatever } | Select-Object -ExpandProperty Group
    

    【讨论】:

    • 我也打算用Group-Object 回答来更新我的帖子。打败我。
    【解决方案2】:

    如果您希望单独对文件夹进行排序,您可以这样做

    Get-ChildItem -Path E:\music\Santana -Recurse -Recurse -Directory | 
        ForEach-Object{Get-ChildItem -Path $_.FullName -File | Sort-Object Length -Descending }
    

    获取该目录下的每个文件夹和子文件夹 Santana 并将其通过管道传输到ForEach-Object,然后您将在其中按大小对文件夹的内容进行排序。当您告诉它对所有内容进行排序时,您正在运行的命令会正确输出。您看到的“分解”就是 PowerShell 输出 System.IO.DirectoryInfo 对象的方式。

    与 Briantist 的示例非常相似(因为他在我更新之前收到了他的帖子),您也可以使用 Group-Object cmdlet。

    Get-ChildItem E:\music\Santana -Recurse -File | Sort-Object Length -Descending | Group-Object directory | Select -ExpandProperty group
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-11-19
      • 1970-01-01
      • 2021-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多