Что такое PowerShell, эквивалентный этой команде Bash?

Я пытаюсь создать команду CLI, чтобы TFS проверял все файлы, в которых есть определенная строка. Я в основном использую Cygwin, но tf Команда имеет проблемы с разрешением пути при запуске в среде Cygwin.

Я полагаю, что PowerShell должен уметь делать то же самое, но я не уверен, что эквивалентны команды для grep и xargs.

Итак, какой будет версия PowerShell, эквивалентная следующей команде Bash?

grep -l -r 'SomeSearchString' . | xargs -L1 tf edit

2 ответа

Решение

Используя некоторые псевдонимы UNIX в PowerShell (например, ls):

ls -r | select-string 'SomeSearchString' | Foreach {tf edit $_.Path}

или в более канонической форме Powershell:

Get-ChildItem -Recurse | Select-String 'SomeSearchString' | 
    Foreach {tf edit $_.Path}

и используя псевдонимы PowerShell:

gci -r | sls 'SomeSearchString' | %{tf edit $_.Path}

Мне проще работать с переменной, например,

PS> $files = Get-ChildItem -Recurse | 
       Select-String 'SomeSearchString' | 
       %{$_.path}  | 
       Select -Unique
PS> tf edit $files
Другие вопросы по тегам