我有一个文件夹结构d:\domains\<domain>\folder1\folder2\folderx
可能有20个<domain>
个文件夹,其下方有不同级别的文件夹。
我想在所有文件夹中搜索.php
个文件,然后只打印退出的唯一<domain>
个文件夹。
例如,如果在
中找到了文件我只想打印domain1.com,domain2.com
。它需要在PowerShell v2中工作。
我有以下内容,但它只打印第一个域?
Get-ChildItem -Path @(Get-ChildItem -Path D:\domains | Where-Object {$_.PSIsContainer})[1].FullName -Recurse *.php |
Select-Object -ExpandProperty FullName
答案 0 :(得分:1)
枚举域文件夹,然后筛选包含.php文件的文件夹。
Get-ChildItem 'D:\domains' | Where-Object {
$_.PSIsContainer -and
(Get-ChildItem $_.FullName -Filter '*.php' -Recurse)
}
如果你有PowerShell v3或更新版本,你可以使用-Directory
开关,而不是检查$_.PSIsContainer
:
Get-ChildItem 'D:\domains' -Directory | Where-Object {
Get-ChildItem $_.FullName -Filter '*.php' -Recurse
}
如果只需要文件夹/域名,请从输出中选择Name
属性:
... | Select-Object -Expand Name