2012-06-20 2 views
4

"navbar"라는 단어가 들어있는 파일을 파일의 원하는 위치에서 찾으려고합니다. 다음과 같이 Mac의 grep 명령을 사용하여이 작업을 수행 할 수 있습니다.PowerShell 1.0의 'grep'

grep -R "navbar" * 

PowerShell 1.0의 기능은 무엇입니까?

+1

참고로, % windir % \ system32 \ windowspowershell \ v1.0 경로는 powershell 1.0을 의미하지는 않습니다. 이것은 이전에 버전이 잘못된 버전 결정의 불행한 부작용입니다. 이것은 powershell 1, 2 및 3의 위치입니다 (현재 최신 버전). powershell 버전을 보려면 $ psversiontable 변수를 검사하십시오. 존재하지 않으면 1.0입니다. 존재하는 경우, PSVersion 속성을보십시오. – x0n

답변

6
findstr /s "navbar" * 

네이티브 명령이지만 충분히 잘 작동해야합니다.

PowerShell 1.0 자체는 다소 까다 롭습니다. Select-String (직접적인 해당 기능)은 2.0 이후에만 존재하기 때문에 생각됩니다.

Get-ChildItem -Recurse | 
    ForEach-Object { 
    $file = $_ 
    ($_ | Get-Content) -cmatch 'navbar' | 
     ForEach-Object { $file.Name + ':' + $_ } 
    } 

짧은 버전 : 그래서 당신은 같은 것을 함께 할 수 있도록해야 할 것

ls -r|%{$f=$_;($_|gc)-cmatch'navbar'|%{$f.Name+":$_"}} 

이것은 말 그대로입니다 :

  1. 합니다 (-R 부분) 재귀 적으로 모든 파일을 찾습니다.
  2. 각 파일을 읽고 파일 이름과 일치하는 줄을 인쇄하십시오.
+3

오 마이 갓! 가난한 창 사용자 .. – coure2011

+5

Erm, 오래된 소프트웨어의 가난한 사용자. PowerShell v2를 설치하십시오. 그리고'findstr' * works *. 나머지는 출력을 모방하는 것이었다. 'navbar'가 나타나는 파일에만 관심이 있다면 (''gci -r |? {(gc $ _) - cmatch'navbar '}'는 그렇게합니다. – Joey

+2

참고로, % windir % \ system32 \ windowspowershell \ v1.0 경로는 powershell 1.0을 의미하지 않습니다. 이것은 이전에 버전이 잘못된 명령 결정의 불행한 부작용입니다. 이것은 powershell 1, 2 및 3의 위치입니다 (현재 최신 버전). powershell 버전을 보려면 $ psversiontable 변수를 검사하십시오. 존재하지 않으면 1.0입니다. PSVersion 속성이 있다면 PSVersion 속성 – x0n