代码之家  ›  专栏  ›  技术社区  ›  Aximili

获取PowerShell中以P开头的目录

  •  0
  • Aximili  · 技术社区  · 4 年前

    我想获取所有以“P”开头的目录。

    在cmd中,您可以这样做:

    dir p*
    

    如何在Windows PowerShell中执行此操作?

    我尝试了这个,但没有返回任何结果:

    Get-ChildItem -Path C:\thePath\* -dir -Include p*
    

    移除 -Include p* 将按预期返回所有文件夹。

    1 回复  |  直到 4 年前
        1
  •  3
  •   mklement0    4 年前

    要么将模式直接包含在 -Path 论点:

    Get-ChildItem -Path C:\thePath\p* -Directory
    

    …或使用 -Filter argument,这是一种更快的选择,因为它在源代码处进行过滤:

    Get-ChildItem -LiteralPath C:\thePath -Filter p* -Directory
    

    至于 你尝试了什么 :

    这个 -Include -Exclude 众所周知,参数是违反直觉的,因为它们只对输入路径或模式本身起作用,而不是对 小孩 给定输入路径中的项目-除非 -Recurse 也有规定。

    在你的情况下,鉴于你 -路径 争论结束于 * ,the -包括 滤波器 应该 工作,但莫名其妙地不是由于额外的存在 -Directory switch-这应该被视为一个bug。
    似乎,随着 Get-ChildItem -与 Get-Item - -包括 仅包括 文件夹 ,不包括目录-请参阅 this GitHub issue .

    能够 通过以下方式使命令工作:(a)从 获取儿童物品 获取项目 以及(b)事后过滤掉非目录,但这比上述替代方案效率低:

    Get-Item C:\thePath\* -Include p* | Where-Object PSIsContainer