Regex 如何查找所有.git\config文件?
我正在尝试查找所有Regex 如何查找所有.git\config文件?,regex,git,powershell,Regex,Git,Powershell,我正在尝试查找所有.git\config文件,但我不知道如何查找 当我仅仅使用\.git作为模式时,它会查找所有目录 Get-ChildItem -Path C:\Repositories -Recurse -Hidden | Where-Object { $_.FullName -match '\.git' } | Select-Object FullName 但当我将其检查为\.git\\config$以仅提供config文件时,它不会产生任何结果
.git\config
文件,但我不知道如何查找
当我仅仅使用\.git
作为模式时,它会查找所有目录
Get-ChildItem -Path C:\Repositories -Recurse -Hidden |
Where-Object {
$_.FullName -match '\.git'
} |
Select-Object FullName
但当我将其检查为\.git\\config$
以仅提供config
文件时,它不会产生任何结果:
Get-ChildItem -Path C:\Repositories -Recurse -Hidden |
Where-Object {
$_.FullName -match '\.git\\config$'
} |
Select-Object FullName
我错过了什么?是因为config
文件没有扩展名吗
我正在使用powershell 5.1。
config
不是隐藏文件,因此仅显示隐藏文件会导致忽略它
Get-ChildItem -Recurse -Force | where-object fullname -match '\.git\\config'
我认为您的正则表达式没有问题--您确定
$\ux.FullName
包含完整的文件路径吗?回显它们,并确保您与您认为的匹配。@Bananaapple这样做是因为当我仅使用config
作为模式时,它会找到所有app.config
s和包含此单词的其他路径,但它不会在隐藏目录上递归,当我添加-Hidden
时,它只搜索隐藏的目录,就像它是互斥的,或者,但是因为只有.git
是隐藏的,config
不是,它似乎停止在文件夹级别:-|太好了,Force
,他们难道不能将它命名为所有或所有-一个人可以徒劳地sarach:-\同意。就我个人而言,我认为让Get-
cmdlet根据其属性隐藏任意内容是与PowerShell的设计背道而驰的-你还必须在哪里粘贴参数“不要对我撒谎”呢?这还将匹配目录,而不仅仅是文件。我是否可以建议包含一个-文件
,并且在进行此操作时,还可以使用本机筛选,而不是将所有条目都提供给管道<代码>获取子项-包括config-File-Recurse-Force | where{$\目录名.EndsWith(“.git”)}@TToni由于“EndsWith”测试,您建议的版本出现了libgit2\tests\resources\bad_tag.git\config
和类似的错误文件。而且getchilditem-Include
非常烦躁,我尽可能避免使用它。它的行为与Get ChildItem-Path config-recurse
相同,因为“Include限定了路径组件”,我发现这总是不可预测的,就个人而言。Get ChildItem
不会在IMO中任意隐藏内容。Hidden
和System
文件通常不是枚举的一部分,除非您特别要求它们(因此,-强制它枚举所有项目)。