2016-08-23 2 views

ответ

1

Использование Where-Object вместо Select-String для фильтрации файлов, разверните свойство FullName (или Name), так что вы получите массив путей или имен файлов, и splat его при вызове 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 заявлении получить только имена файлов без пути.

+0

'Where-Object' соответствует имени файла, но мне нужно, чтобы оно соответствовало содержимому файла. – PortMan

0

Вы можете получить доступ к двум результатам по индексу:

$result = dir -recurse *.* | sls -pattern "matching_pattern" | select -unique path 
gvim $result[0].FullName $result[1].FullName 
+0

Я знаю, что я этого не говорил, но мне нужно что-то, что работает с неизвестным количеством матчей. – PortMan

Смежные вопросы