Powershell - get-childitem 但只返回其中包含项目的目录?

Powershell - get-childitem 但只返回其中包含项目的目录?

我们有一个 ftp 服务器,上面有 30k+ 个目录和数十个子目录。很多文件夹都是空的。

我正在尝试编写一个 powershell 脚本,将列表导出到 CSV,但如果任何子目录中都没有项目,则将其从列表中排除。

有什么帮助吗?我的尝试没有奏效。

答案1

您可以使用-File仅返回文件对象(并跳过空目录):

Get-ChildItem 'C:\folder\' -Recurse -File

答案2

进行常规操作Get-ChildItem并使用以下方法进行过滤Where-Object

gci -recurse | ? {
    -not ($_.Attributes -band [IO.FileAttributes]::Directory) `
    -or `
    (gci $_.FullName).Count -gt 0
}

方便的是,它似乎gci <file>返回一个项目(文件本身),因此可以简化为:

gci -recurse | ? { (gci $_.FullName).Count -gt 0 }

答案3

要仅列出非零的目录Count,请使用 -Directory开关 获取子项 像这样,导出到 CSV:

Get-ChildItem -Directory -recurse | ? {$_.GetFiles().Count -ne 0} | Export-Csv -NoTypeInformation list.csv

您可以通过筛选进一步选择要包含在 CSV 文件中的结果属性 选择对象命令

相关内容