2013-10-25 2 views
0

나는 findstr을 사용하여 searchList.txt의 모든 행과 일치하는 행에 대해 여러 개의 큰 디렉토리를 재귀 적으로 검색합니다.powershell에서/G 매개 변수로 findstr을 호출하는 방법

내가 PowerShell 스크립트에서 같은 일을 할
findstr /SNIP /D:"C:\search Dir1;C:\search Dir2" /G:C:\searchList.txt * 

, 어느 findstr 명령을 호출 또는 PowerShell에서 완전히 뭔가를 수행하여. searchList.txt의 각 항목을 반복 한 다음 모든 디렉토리를 살펴 보는 것은 너무 느립니다.

Powershell에서 위의 줄을 어떻게 호출합니까?

미리 감사드립니다.

답변

2

PowerShell 프롬프트에서 열고 입력하고 [ENTER]을 입력하여 PowerShell에서 호출 할 수 있습니다.

PowerShell에서 해당 명령을 실행하지 못하게하는 어떤 것도 표시되지 않습니다. findstr은 기본 cmd 명령이 아니며 Windows와 번들로 제공되고 기본 시스템 경로 (System32 디렉터리)에있는 독립 실행 형 .exe 파일이므로 PowerShell에서 사용할 수 있습니다.

네이티브 PowerShell에서 할 수 있지만 불필요한 두통입니다. 당신은 AFAIK는 파일이 텍스트 또는 바이너리인지 여부를 확인 할 내장 방법이 없기 때문에,이

echo 'C:\search Dir1' 'C:\search Dir2' | Get-ChildItem | Select-String ((Get-Content C:\searchlist.txt) -join '|') 

하지만, 바이너리 파일을 제외하는 것이 고통처럼 뭔가를해야 할 것입니다. 확장 프로그램에 의존 할 수 있다면 Get-ChildItem 뒤에 -Filter *.txt을 추가 할 수 있습니다.

결론 : 가치가 없습니다. Select-String은 .NET 정규 표현식을 사용할 수 있기 때문에 일치하는 패턴 측면에서보다 다재다능하지만 검색하고자하는 패턴이 인 경우 findstr의 정규 표현식 기능이 제한적일 경우 findstr 이 작업에는이 있으며 스크립트는 항상 Windows에 포함되어 있기 때문에 이식 가능합니다.

관련 문제