Powershell 无法精确匹配文件夹全名
Powershell unable to exact match folder full name
我有一个脚本可以使用 powershell get-childitem 命令获取文件夹中的所有文件。我正在使用带有匹配参数的管道来过滤文件名,如下所示:
Get-ChildItem -Path \path\* -recurse | Where-Object {$_.FullName -match 'backup'}
输出:
期望结果:
Only folder name exact match 'backup' will be in result, backup 2
should be not in the result.
看起来 match 参数的行为相似 'backup*',尝试了其他比较运算符,例如 -ceq、-eq、-like、-contains 等,但 none 它们按预期工作,其中大多数 return 根本没有结果。我应该使用什么比较运算符或者是否有其他解决此问题的方法?
-match
使用正则表达式并检查字符串是否包含它(确实像 '*backup*'
)。
但是,您从 $_.fullname
获得的字符串使用 \
来分隔文件夹。所以我们可以检查 '\backup\'
。但是由于 -match
使用正则表达式,我们需要使用 \
:
转义 \
...| Where-Object {$_.FullName -match '\backup\'}
您必须使用 $_.Name
执行此操作
Get-ChildItem -Path "\path\" -recurse | Where-Object {$_.Name -eq 'backup'}
-eq
运算符匹配准确的文件名。
如果它是您要匹配的直接父文件夹,您可以这样做:
... | Where-Object {$_.Parent.Name -eq 'backup'}
我有一个脚本可以使用 powershell get-childitem 命令获取文件夹中的所有文件。我正在使用带有匹配参数的管道来过滤文件名,如下所示:
Get-ChildItem -Path \path\* -recurse | Where-Object {$_.FullName -match 'backup'}
输出:
期望结果:
Only folder name exact match 'backup' will be in result, backup 2 should be not in the result.
看起来 match 参数的行为相似 'backup*',尝试了其他比较运算符,例如 -ceq、-eq、-like、-contains 等,但 none 它们按预期工作,其中大多数 return 根本没有结果。我应该使用什么比较运算符或者是否有其他解决此问题的方法?
-match
使用正则表达式并检查字符串是否包含它(确实像 '*backup*'
)。
但是,您从 $_.fullname
获得的字符串使用 \
来分隔文件夹。所以我们可以检查 '\backup\'
。但是由于 -match
使用正则表达式,我们需要使用 \
:
\
...| Where-Object {$_.FullName -match '\backup\'}
您必须使用 $_.Name
Get-ChildItem -Path "\path\" -recurse | Where-Object {$_.Name -eq 'backup'}
-eq
运算符匹配准确的文件名。
如果它是您要匹配的直接父文件夹,您可以这样做:
... | Where-Object {$_.Parent.Name -eq 'backup'}