我有以下渠道:
dir -recurse *.* | sls -pattern "matching_pattern" | select -unique path
这给了我这样的输出:
Path
----
D:\code\a.txt
D:\code\b.txt
我希望它调用命令gvim a.txt b.txt
。
我该怎么做?
答案 0 :(得分:1)
使用Where-Object
代替Select-String
来过滤文件,展开FullName
(或Name
)属性,以便获得路径或文件名数组,以及{ {3}}在调用gvim
:
$files = Get-ChildItem -Recurse *.* |
Where-Object { (Get-Content $_.FullName) -match "matching_pattern" } |
Select-Object -Unique -Expand FullName
& gvim @files
将FullName
替换为Name
语句中的Select-Object
,以获取没有路径的文件名。
如果你想坚持使用Select-String
,那么方法就会类似:
$files = Get-ChildItem -Recurse *.* |
Select-String -Pattern "matching_pattern" |
Select-Object -Unique -Expand Path
& gvim @files
将Path
替换为Filename
语句中的Select-Object
,以获取没有路径的文件名。
答案 1 :(得分:0)
您可以通过索引访问这两个结果:
$result = dir -recurse *.* | sls -pattern "matching_pattern" | select -unique path
gvim $result[0].FullName $result[1].FullName