【问题标题】:List files recursively within directories that start with a specified letter在以指定字母开头的目录中递归列出文件
【发布时间】:2018-08-15 00:36:30
【问题描述】:

我正在尝试通过 PowerShell 获取特定目录中的所有 *.html 文件。 文件夹结构如下:

folder
  subfolder1
  subfolder2
  subfolder3
  subfolder4
  ...

子文件夹按字母顺序排列。存在从 a 到 z 的文件夹。我现在想获取以字母 b 开头的文件夹中的所有 .html 文件。

我试过了

Get-ChildItem -Path *.html -Recurse -Force

这给了我所有文件夹中的所有html 文件。但是如何限制路径,使其只检查以 b 开头的子目录?

【问题讨论】:

  • *.html -> b*.html?

标签: powershell powershell-4.0


【解决方案1】:

我不确定这是否是最有效的,但你可以这样做:

Get-ChildItem -Directory b* | Select -ExpandProperty FullName | % {Get-ChildItem $_\*.html}

或者根据您的需要,您也可以使用Get-ChildItem -Directory b* -Recurse

您可能需要格式化Get-ChildItem $_,具体取决于您希望输出的样子,因为它默认写入目录。

【讨论】:

  • 对我来说,我做了测量命令,它们在一棵大树上的表现几乎相同。
  • 逻辑上它会执行得更快,但仔细想想,由于处理的块是第一个get-child项,这取决于磁盘速度,你可能有一个非常有效的观点。无论如何,奇怪的是我发布的最后一个命令大约是速度的一半,即使没有管道。测量命令在 1 个循环上也不可靠,最好执行类似 $measure = measure-command{1..100|foreach{command to test}}; $measure.milliseconds / 100 的操作
猜你喜欢
  • 2022-01-18
  • 2011-08-06
  • 1970-01-01
  • 1970-01-01
  • 2015-04-06
  • 2021-10-23
  • 1970-01-01
  • 2021-01-05
  • 1970-01-01
相关资源
最近更新 更多