按文件夹分组powershell搜索结果

时间:2014-10-09 14:44:00

标签: powershell windows-server-2008

我正在尝试使用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”分为两个不同的部分。

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

2 个答案:

答案 0 :(得分:0)

如果您想单独对文件夹进行排序,可以执行类似这样的操作

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

答案 1 :(得分:0)

Get-ChildItem -Path $yourPath -Recurse -File | Sort-Object -Property Length -Descending | Group-Object -Property Directory | ForEach-Object { $_.Group }

工作原理

您已经熟悉前两个管道细分,所以让我们看一下最后一个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