查找并递归
find and recurse
我有一个文件夹结构d:\domains\<domain>\folder1\folder2\folderx
可能有 20 个 <domain>
文件夹,它们下面有不同级别的文件夹。
我想在所有文件夹中搜索 .php
个文件,并只打印它们退出的唯一 <domain>
个文件夹。
例如,如果在
中找到文件
- d:\domains\domain1.com\test\test
- d:\domains\domain2.com\test\test
- d:\domains\domain2.com\test\help
我只想打印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
枚举域文件夹,然后过滤其中包含 .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
}
Select 输出中的 Name
属性 如果您只需要 folder/domain 名称:
... | Select-Object -Expand Name
我有一个文件夹结构d:\domains\<domain>\folder1\folder2\folderx
可能有 20 个 <domain>
文件夹,它们下面有不同级别的文件夹。
我想在所有文件夹中搜索 .php
个文件,并只打印它们退出的唯一 <domain>
个文件夹。
例如,如果在
中找到文件- d:\domains\domain1.com\test\test
- d:\domains\domain2.com\test\test
- d:\domains\domain2.com\test\help
我只想打印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
枚举域文件夹,然后过滤其中包含 .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
}
Select 输出中的 Name
属性 如果您只需要 folder/domain 名称:
... | Select-Object -Expand Name