[英]Using get-childitem -Exclude to avoid recycle bin, windows, program files
我试图在对Get-ChildItem
的递归调用中排除“回收站”、“Windows”和“程序文件”文件夹。
我认为它只是-Exclude '$Recycle.Bin', 'Windows', 'Program Files'
或-Exclude 'C:\$Recycle.Bin', 'C:\Windows', 'C:\Program Files'
,但这些都没有给我想要的结果。 有任何想法吗? 谢谢
使用 Recurse 选项时,Exclude 不会过滤掉在排除目录中找到的子对象。 这里的答案包含一个很好的解释:
如何从 PowerShell 中的 Get-ChildItem 中排除文件和文件夹?
您可以按照其他答案的建议将多个呼叫串在一起来完成您想要的。 这是一个示例单行 PowerShell 命令,它列出了所有大于 1GB 的文件,不包括您列出的目录:
Get-ChildItem C:\ -Directory | Where-Object Name -NotIn @('Windows','Program Files','$Recycle.Bin') | % { Get-ChildItem -File $_.FullName -Recurse} | Where-Object {($_.Length /1GB) -gt 1} | Sort -Descending -Property Length | Format-Table Length, FullName -AutoSize -Wrap
以下是此单线工作原理的细分:
这应该涵盖您在原始问题中所要求的内容。 第二个 Where-Object cmdlet 过滤大小超过 1GB 的文件,然后按文件大小排序,结果以表格格式打印出来。 您可能想用您想要做的任何事情来替换这些部件。
如果您想使用不同类型的过滤器而不是 NotIn 过滤器,请查看Where-Object文档中的所有其他可用选项。
您可以改用此语法来实现相同的效果。
$Directories = Get-ChildItem c:\ -Directory | Where-Object Name -NotIn @('Windows','Program Files','$Recycle.Bin')
$Output = $Directories | % { Get-ChildItem $_.FullName -Recurse}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.