我正在尝试使用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”分为两个不同的部分。
如何“重新分组”搜索结果,如果我想显示一个文件夹,该文件夹包含一个按文件夹分组的子文件夹?
答案 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