처음 접하는 사람에게는 findstr 같은 패턴 검색 도구가 크게 쓸모없어 보일 수 있습니다. 하지만 수백 줄에 달하는 시스템 생성 로그 파일이나 명령줄 출력을 다뤄야 할 때는 findstr이 바로 필요한 도구입니다.
리눅스 사용자라면 Grep 명령어의 놀라운 활용도를 이미 잘 알고 있을 것입니다. findstr은 마이크로소프트 윈도우에서 이와 유사한 역할을 수행합니다. 파이프를 사용해 다른 명령어와 조합하거나, 여러 텍스트 파일을 직접 분석하는 것도 가능합니다. 몇 가지 예제를 통해 findstr의 작동 방식을 살펴보겠습니다.
Findstr 명령어 사용법
기본 구문은 아주 간단합니다 – findstr <문자열> <파일경로>. 여기서 <문자열>은 검색할 패턴이고, <파일경로>는 검색 대상 파일의 위치입니다. 명령 프롬프트를 열어 직접 실행해 보세요.
findstr SFC example1.txt
이 명령은 검색 문자열 SFC가 포함된 모든 줄을 찾아 화면에 출력합니다. 단, 기본적으로 findstr은 대소문자를 구분하므로 소문자 sfc는 매칭되지 않는다는 점에 유의하세요.

매개변수(옵션) 활용
선택적 매개변수를 추가하면 findstr의 동작 방식을 더욱 세부적으로 조정할 수 있습니다. /B나 /I 같은 스위치는 검색에 추가 조건을 부여하여 findstr의 동작을 변경합니다. 예를 들면 다음과 같습니다.
findstr /I SFC example1.txt
/I 옵션을 추가하면 대소문자를 구분하지 않고 검색하여, 해당 단어가 어떤 형태로 작성되었든 모두 일치하게 됩니다. findstr의 전체 매개변수 목록은 마이크로소프트 공식 문서에서 확인할 수 있습니다.

다중 패턴 지정
매개변수만이 findstr을 커스터마이즈하는 유일한 방법은 아닙니다. 예를 들어 <문자열>을 따옴표로 묶으면 여러 패턴을 동시에 지정할 수 있으며, 그중 하나라도 발견되면 일치 결과를 반환합니다.
findstr "SFC DISM" example1.txt
위 명령은 두 용어 중 하나라도 포함된 줄을 반환합니다. 서로 다른 이름으로 불리는 항목을 찾을 때 특히 유용합니다.

정규식으로 여러 파일 검색
findstr은 여러 파일을 한 번에 검색할 수도 있습니다. <파일경로>에 정규식을 지정하면, 일치하는 모든 파일에서 지정된 패턴을 찾습니다.
findstr SFC *.txt
와일드카드 문자를 사용하면 현재 디렉터리의 모든 텍스트 파일에 정규식이 적용됩니다. 결과 역시 파일 이름별로 구분되어 표시되므로, 각 줄이 어느 파일에서 나온 것인지 쉽게 파악할 수 있습니다.

파이프(|)와 함께 사용
대부분의 cmd 명령어와 마찬가지로, findstr은 다른 명령어의 출력에도 적용할 수 있습니다. 대상 명령어 끝에 파이프를 추가하고, <파일경로> 없이 findstr을 호출하기만 하면 됩니다.
dir | findstr .txt
이렇게 하면 dir 명령어의 출력에 findstr 검색이 수행되어, .txt로 끝나는 파일 목록이 반환됩니다. 물론 dir 자체가 정규식으로 같은 형식의 파일을 찾을 수 있기 때문에, 이 예제는 실무에서는 큰 의미가 없습니다.
출력을 텍스트 파일로 리디렉션한 후 그 파일에 findstr을 사용하는 우회 방법도 있지만, 중간 단계를 생략하는 편이 훨씬 간편합니다.
윈도우에서 Findstr의 실전 활용 사례
findstr의 기본적인 용도는 구문만 봐도 쉽게 짐작할 수 있습니다. 특정 문자열이 포함된 텍스트 파일을 찾거나, 특정 문자열이 파일 안에 존재하는지 확인하는 것이죠.
그러나 이런 용도는 이론적으로 유용할 뿐, 실제로 쓰이는 경우는 드뭅니다. 구글 독스 같은 클라우드 서비스 시대에는 텍스트 파일을 많이 보관하는 사람이 거의 없기 때문입니다.
findstr의 진짜 활용법은 좀 더 은근하면서도 훨씬 강력한 결과를 만들어냅니다. 흥미로운 예제 몇 가지를 소개합니다.
특정 조건의 파일 찾기
dir 명령어 자체에도 정규식으로 파일 이름을 검색하는 기능이 포함되어 있습니다. 하지만 findstr을 결합하면 생성 시각이나 날짜 같은 다른 속성을 기준으로 파일을 검색할 수 있습니다.
오후 6시 43분에 오류가 발생했고, 그 시점에 생성된 로그 파일을 모두 찾고 싶다고 가정해 봅시다. dir 명령어만 사용하면 결과를 일일이 눈으로 걸러내거나 로그 파일을 전부 받아 비교해야 합니다. findstr을 사용하면 단순한 명령 하나로 해결됩니다.
dir | findstr 06:43
같은 요령으로 특정 날짜에 생성된 파일을 찾거나, 디렉터리 목록만 추출할 수도 있습니다.
dir | findstr DIR

Netstat로 네트워크 정보 필터링
Netstat는 컴퓨터의 네트워크 연결에 관한 모든 정보를 보여주는 편리한 윈도우 명령어입니다. 문제는 정보가 너무 많다는 것인데, 바로 이 지점에서 findstr이 빛을 발합니다.
netstat의 출력을 findstr로 넘기면 특정 속성을 가진 연결만 골라낼 수 있습니다. 예를 들어 다음과 같이 입력하면 설정된(ESTABLISHED) 연결 목록을 얻을 수 있습니다.
netstat | findstr ESTABLISHED

네트워크 문제를 진단할 때 이런 기법이 특히 유용합니다. 애플리케이션의 PID와 함께 findstr을 사용하면, 특정 프로세스가 연 모든 연결을 찾아낼 수도 있습니다.
netstat -o | findstr 13120
특정 IP 주소 추출
ipconfig 명령어는 IP 주소를 포함해 시스템의 모든 네트워크 인터페이스 상세 정보를 보여줍니다. findstr을 사용하면 긴 출력을 스크롤하며 찾아볼 필요 없이, 원하는 유형의 IP 주소만 깔끔하게 추출할 수 있습니다.
ipconfig | findstr Temporary
이 방법을 확장하면 서브넷 마스크부터 게이트웨이 주소까지, ipconfig가 제공하는 어떤 정보든 손쉽게 얻을 수 있습니다.
스크립트 파일 분석
어떤 프로그래밍 언어로 코드를 작성하든, 스크립트 파일은 결국 텍스트입니다. 따라서 findstr을 활용하면 코드 전체를 샅샅이 뒤지지 않고도 스크립트를 분석하고 특정 부분만 추출할 수 있습니다.
예컨대 특정 스크립트에서 if 문이 어떻게 사용되었는지 확인하고 싶다면 다음 명령어를 사용하면 됩니다.
findstr if script.ahk

이 명령은 if 문이 사용된 줄을 보여줄 뿐만 아니라, 함께 쓰인 표현식까지 표시해 줍니다. 여기에 /N 매개변수를 추가하면 줄 번호까지 출력되는데, 스크립트 파일을 다룰 때 매우 유용한 기능입니다.
findstr /N if script.ahk

Findstr, 사용할 가치가 있을까?
명령줄 인터페이스를 다룰 때 가장 큰 어려움은 걸러내야 할 텍스트의 방대한 양입니다. Findstr은 유용한 정보를 추출하고 불필요한 잡음을 걸러내는 데 필수적인 도구입니다.
모든 터미널 명령어가 텍스트 기반 출력을 제공하기 때문에, findstr은 언제든 관련 데이터를 찾는 데 활용할 수 있습니다. 네트워크 문제 해결부터 올바른 파일 찾기까지, findstr은 모든 작업의 효율을 한층 끌어올려 줍니다.
다른 명령어와의 시너지를 떠나서도, findstr은 텍스트 파일 내용을 빠르게 탐색하는 능력 덕분에 충분히 가치가 있습니다. 기계가 생성한 로그 파일에서 특정 오류를 찾거나, 복잡한 스크립트의 코드 일부를 손쉽게 추출할 수 있습니다.
요컨대 findstr은 고급 윈도우 사용자, 특히 명령줄 인터페이스에 능숙해지고자 하는 사용자라면 반드시 익혀야 할 필수 도구입니다.