WINDOWS
2020.07.10 / 09:28

윈도우 find, findstr 명령어 grep

코로나
추천 수 22

리눅스를 사용하시는 분들이라면 grep명령어 한번씩은 사용해 보셨을 겁니다. 지정한 문자열만 출력하는 기능으로 알아두면 참 편리하죠. 윈도우에도 비슷한 기능으로 find와 findstr 명령어가 있습니다. find에서 기능을 추가한 것이 findstr이라고 보시면 됩니다.

find 명령어 사용방법에 대해 알아 보겠습니다.


find /? 를 입력하시면 사용방법에 대해 알 수 있습니다.


netstat -ano | find "문자열" 입력 시 문자열이 포함된 열만 출력해 줍니다.


/v 옵션은 지정한 문자열을 제외한 열을 출력해 줍니다.


find 명령어를 이용하여 find "문자열" 파일명 >> 파일명  을 입력하시면 파일 내용에 대해서도 필터링 가능합니다.
find "service=icmp" log.txt >> service_icmp.txt 는 log.txt 파일 내용 중 service=icmp 문자열이 있는 열을 검색하고 결과를 service_icmp.txt 파일로 저장하는 명령 입니다.


참고로 >> 파일명은 결과를 파일명으로 저장하는 기능인데요. >> 는 이미 동일한 이름의 파일이 있다면 이어서 저장하며 > 는 동일한 이름의 파일이 있다면 덮어씁니다. 


service_icmp.txt 파일을 열어보면 service=icmp에 해당하는 내용만 저장된 것을 확인 할 수 있습니다.


다음으로 findstr에 대해 알아 보겠습니다. find 명령어에 비해 많은 옵션을 제공하며 정규표현식도 사용 가능 합니다.


findstr의 몇가지 옵션을 사용해서 명령어를 실행해 보겠습니다.


findstr /s /i "policy_id=1 service=smtp" * > id1_smtp.txt

/s 옵션으로 하위 디렉토리까지 탐색하며, /i옵션으로 대소문자를 구분하지 않습니다. 그리고 "문자열1 문자열2" 으로 입력하여 문자열1 또는 문자열2가 포함되어 있는 행을 출력해 줍니다.(or 조건) 파일명은 *로 표시하여 모든 파일에 대해 검색합니다.


findstr /s /i /c:"policy_id=1 service=smtp" * > id1_smtp.txt

/c: 옵션은 문자열 그대로 검색하는 옵션입니다. 앞에서는 공백이 들어갔을 때 공백으로 문자열을 구분해서 or조건이 되었으나 /c:옵션은 공백까지 문자열로 인식해서 "policy_id=1 service=smtp" 라는 문자열이 포함된 행을 출력해 줍니다.


find와 findstr 명령을 혼합하여 사용도 가능합니다.


netstat -na | findstr "ESTABLISHED" | find "443"

443 port에 대해 ESTABLISHED 된 목록을 출력해 줍니다.



출처: https://realforce111.tistory.com/10 [KIMS BLOG]