数据集
C:\temp\powershelltest\
\dir.1\test.txt
\dir.2\test.txt
\dir.3\test.txt
\test.ps1
目录。[0-9] \ test.txt的
file dir[0-9]
helloworld
尝试
test.ps1
$content = Get-Content "C:\temp\powershelltest\dir.[0-9]\test.txt"
Write-Host $content[0]
结果
当前结果
PS C:\Windows\system32> . "C:\temp\powershelltest\test.ps1"
file dir1
预期结果
PS C:\Windows\system32> . "C:\temp\powershelltest\test.ps1"
file dir1
file dir2
file dir3
答案 0 :(得分:2)
Get-Content
不会使用正则表达式进行过滤,而是使用approved wildcards进行过滤。我会用Get-ChildItem
和你的wilcards来解决这个问题。 注意您还需要指定Recurse
以从子文件夹中获取结果
Get-ChildItem "C:\temp\powershelltest\dir.[0-9]" -Recurse -Filter "test.txt" |
ForEach-Object{ Get-Content $_.FullName | Select-Object -First 1}
这应该从每个“test.txt”文档中获取第一行,该文档具有“dir”。后跟父目录的单个数字。
导致:
PS C:\Windows\system32> . "C:\temp\powershelltest\test.ps1"
file dir1
file dir2
file dir3