You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Powershell筛选仅包含文件的文件夹并输出对应路径

PowerShell 实现查询所有含文件的目录

需求背景

给定如下目录结构,需要返回所有包含至少一个文件的目录,路径使用正斜杠分隔:

root
├───A
│   ├───1
│   │       a.txt
│   │       b.txt
│   │
│   ├───2
│   │       a.txt
│   │
│   └───3
├───B
│   ├───1
│   │       a.txt
│   │       b.txt
│   │
│   └───3
└───C
    ├───1
    └───2

预期输出:

root/A/1
root/A/2
root/B/1

最佳实现方案

高效版(推荐)

使用EnumerateFiles检测文件存在,无需遍历目录下所有文件,性能最优:

Get-ChildItem -Directory -Recurse root | Where-Object { $_.EnumerateFiles().Any() } | ForEach-Object { $_.FullName -replace '\\', '/' }

简洁版

逻辑直观,适合文件量小的场景:

Get-ChildItem -Directory -Recurse root | Where-Object { $_.GetFiles().Count -gt 0 } | ForEach-Object { $_.FullName.Replace('\', '/') }

命令说明

  • Get-ChildItem -Directory -Recurse root:递归遍历root目录下的所有子目录,仅返回目录类型对象
  • Where-Object筛选逻辑:判断当前目录下是否存在文件,过滤空目录
  • 路径替换逻辑:将Windows默认的反斜杠路径分隔符替换为正斜杠,匹配预期输出格式

内容的提问来源于stack exchange,提问作者user32882

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 05:45:01