2010-07-09 6 views
2

다음 Unix 1 Liner를 PowerShell으로 번역하고 싶습니다.Unix1Liner를 PowerShell로 번역하십시오.

요약 명령 : 이 명령은 확장자가 .jsp 인 파일에 대해 PWD (압축 작업 디렉토리)를 반복적으로 검색하고 파일에서 'logoutButtonForm'과 같은 간단한 문자열 일치를 찾습니다. 일치하는 항목을 찾으면 일치하는 파일 이름과 텍스트를 인쇄합니다.

find . -name "*.jsp" -exec grep -aH "logoutButtonForm" {}\; 

저는 파워 쉘을 처음 사용하고 인터넷 검색을하고 있지만 아직 좋은 답변을 찾지 못했습니다.

답변

6
ls . -r *.jsp | Select-String logoutButtonForm -case 

필자는 필터 오버플로를 선호합니다. PowerShell 1.0에서 버그가있는 동작을 관찰 한 후에 -Exclude/-Include 매개 변수를 신뢰하지 못했습니다. 또한 -Filter는 -Include보다 훨씬 빠릅니다.

+0

이 명령과 Johannes의 명령 모두 동일한 결과를 산출합니다. 이 명령은 훨씬 빠르게 실행됩니다. (나는 얼마나 빨리 놀랐다.) –

+0

Yikes. 이제 * 쓸데없는'foreach'를 포함시키는 함정에 이미 빠져 있습니다. 어쨌든'-Include'는 습관이다. 나는 항상'gci -r * .foo'를 시도 했었고 분명히 기대했던 것을하지 않았기 때문에 결코'gci에 도착하지 않았습니다. -r * .foo'. 'Select-String'에 관해서 - 이것은 제가 처음 사용했을 때입니다. 대부분''(gc meh) - 'foo'와 일치하면 충분합니다. 'Select-String'에는 기본적으로 짧은 별칭이 필요하다고 생각합니다. 'grep'과 같은 것이 적합 할 수도 있습니다. ;-) ... 이제는 더 이상 내 대답을 삭제할 수 없습니다. – Joey

+1

그래,'gci -r * .foo'에서'* .foo'라는 위치는 -Path 매개 변수에 할당됩니다. '.'을 먼저 붙이면'* .foo'는'-Filter' 인 다음 위치 매개 변수에 할당됩니다. PSCX에서 우리는'sls'의 PowerShell 정식 스타일 별칭을 만들었지 만'grep'는 UNIX 스타일 별칭에 좋을 것입니다. –

관련 문제