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

PowerShell:如何从目录指定子文件夹仅列出文件名

如何在PowerShell中仅列出指定子文件夹内的文件名

我懂你遇到的麻烦了——当你尝试用-Recurse搭配-Include指定文件夹名称时,PowerShell只返回了那两个文件夹本身,完全没给出里面的文件。这是因为-Include在这里默认匹配的是文件夹对象,不是我们要找的文件。下面给你几个实用的解决办法:

方法1:直接定位目标文件夹(最直观)

如果已经明确知道要找的是FolderTwo和FolderThree,直接指定它们的路径,再加-File参数只返回文件就行:

Get-ChildItem -Path "C:\MainFolder\FolderTwo", "C:\MainFolder\FolderThree" -File

要是这两个文件夹里还有嵌套的子文件夹,需要连里面的文件一起列出,就加上-Recurse:

Get-ChildItem -Path "C:\MainFolder\FolderTwo", "C:\MainFolder\FolderThree" -File -Recurse

方法2:遍历主目录后过滤文件路径

如果想从主目录开始递归遍历,再筛选出目标文件夹里的文件,可以用Where-Object来过滤文件所在的目录:

Get-ChildItem -Path "C:\MainFolder" -File -Recurse | Where-Object { $_.DirectoryName -match "FolderTwo|FolderThree" }

这里-File确保只返回文件对象,-Recurse遍历所有子目录,最后用正则匹配筛选出目录包含FolderTwo或FolderThree的文件。

方法3:修正-Include的使用方式(进阶)

你之前的写法问题在于,当路径是目录且没加通配符时,-Include会匹配目录本身。如果非要用-Include,得在路径末尾加\*,让PowerShell知道要匹配目录下的内容:

Get-ChildItem -Path "C:\MainFolder\*" -Include "FolderTwo\*", "FolderThree\*" -File -Recurse

不过这种写法不如前两种直观,一般更推荐前两种方案。

为什么原来的方法失效?

当你执行Get-ChildItem -Path C:\MainFolder -Recurse -Include "FolderTwo", "FolderThree"时,PowerShell会遍历主目录下的所有对象,-Include在这里匹配的是名称为FolderTwo/FolderThree的目录,所以只会返回这两个文件夹,而不是里面的文件。必须明确指定要获取文件,并且精准筛选它们的所在目录才行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:14:38