2010-01-20 15 views
8

Sto provando a creare un comando CLI per fare in modo che TFS controlli tutti i file che contengono una stringa particolare. Io principalmente utilizzo Cygwin, ma il comando tf ha problemi a risolvere il percorso quando viene eseguito all'interno dell'ambiente Cygwin.Qual è l'equivalente di PowerShell per questo comando di Bash?

Immagino che PowerShell sia in grado di fare la stessa cosa, ma non sono sicuro di quali siano i comandi equivalenti a grep e xargs.

Quindi, quale sarebbe la versione di PowerShell equivalente al seguente comando Bash?

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

risposta

12

Utilizzando alcuni alias UNIX in PowerShell (come ls):

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

o in una forma PowerShell più canonica:

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

e utilizzando alias PowerShell:

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

Trovo più facile da digerire utilizzando una variabile, ad esempio

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