2010-01-20 8 views
8

Ich versuche einen CLI Befehl zu erstellen, um TFS auschecken alle Dateien, die eine bestimmte Zeichenfolge in ihnen haben. Ich verwende hauptsächlich Cygwin, aber der tf Befehl hat Schwierigkeiten, den Pfad aufzulösen, wenn er innerhalb der Cygwin-Umgebung ausgeführt wird.Was ist die PowerShell-Entsprechung zu diesem Bash-Befehl?

Ich denke, PowerShell sollte in der Lage sein, das gleiche zu tun, aber ich bin mir nicht sicher, was die entsprechenden Befehle zu grep und xargs sind.

Also, was wäre die entsprechende PowerShell-Version zum folgenden Bash Befehl?

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

Antwort

12

einige UNIX Aliase in Power Verwendung (wie ls):

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

oder in einer kanonischen Powershell Form:

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

und unter Verwendung von Power Aliases:

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

Ich finde es einfacher zu grok unter Verwendung einer Variablen, z. B.

PS> $files = Get-ChildItem -Recurse | 
     Select-String 'SomeSearchString' | 
     %{$_.path} | 
     Select -Unique 
PS> tf edit $files