微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Get-ChildItem 递归但排除父文件夹中的文件

如何解决Get-ChildItem 递归但排除父文件夹中的文件

我需要获取 $PSScriptRoot 的所有子目录中的文件列表,但排除 $PSScriptRoot 父文件夹中的所有文件

$Files = Get-ChildItem -LiteralPath $PSScriptRoot -Recurse | Where-Object {!$_.PSIsContainer}

解决方法

您可以先列出父文件夹,然后递归文件的每个目录:

$Files = Get-ChildItem -LiteralPath $PSScriptRoot -Directory | Get-ChildItem -File -Recurse
,

您可以添加一个 Where-Object 子句来过滤掉 $PSScriptRoot 中直接存在的所有文件:

$Files = Get-ChildItem -LiteralPath $PSScriptRoot -Recurse -File | Where-Object { $_.DirectoryName -ne $PSScriptRoot}

从 PowerShell 3.0 版开始,您可以使用开关 -File 而不是 Where-Object {!$_.PSIsContainer}

,

你只需要再次调用 Get-ChildItem 作为管道

$Files = Get-ChildItem -LiteralPath $PSScriptRoot -Recurse | Where-Object {!$_.PSIsContainer} | Get-ChildItem

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。