我想从存储在subversion中的脚本的位置找到顶层的所有目录。
在C#中应该是这样的
Directory.GetDirectories(".")
.Where(d=>Directories.GetDirectories(d)
.Any(x => x == "_svn" || ".svn"));我在PowerShell中找到"Any()“的对等物有点困难,我不想经历调用扩展方法的尴尬。
到目前为止,我得到了以下信息:
Get-ChildItem | ? {$_.PsIsContainer} | Get-ChildItem -force | ? {$_.PsIsContainer -and $_.Name -eq "_svn" -or $_.Name -eq ".svn"这会找到svn目录本身,但不会找到它们的父目录--这正是我想要的。加分,如果你能告诉我为什么
| Select-Object {$_.Directory}在该命令列表的末尾只显示一系列空行。
发布于 2009-09-30 17:11:44
不幸的是,在PowerShell中没有类似的东西。我写了一篇关于这方面的博客文章,并提出了一个通用测试的建议--任何函数/过滤器。
function Test-Any() {
begin {
$any = $false
}
process {
$any = $true
}
end {
$any
}
}博客帖子:
发布于 2014-02-28 16:38:21
@JaredPar答案的一个变体,将测试合并到Test-Any过滤器中:
function Test-Any {
[CmdletBinding()]
param($EvaluateCondition,
[Parameter(ValueFromPipeline = $true)] $ObjectToTest)
begin {
$any = $false
}
process {
if (-not $any -and (& $EvaluateCondition $ObjectToTest)) {
$any = $true
}
}
end {
$any
}
}现在我可以像这样编写“任何”测试
> 1..4 | Test-Any { $_ -gt 3 }
True
> 1..4 | Test-Any { $_ -gt 5 }
False发布于 2016-11-17 00:12:55
您可以使用原始的LINQ Any
[Linq.Enumerable]::Any($list)https://stackoverflow.com/questions/1499466
复制相似问题