잡담/개인보관용

명령프롬프트(cmd)에서 find, findstr 사용법(특정단어찾기)

호 두 2019. 6. 11. 15:27
반응형

자체서비스 어플리케이션의 유지보수 업무를 하다보면 로그파일을 보게되는 일이 잦다.

 

개인적으로 데이터베이스와 로그파일을 비교하여 원하는 정보를 색출해내기 위한 find, findstr 명령어의 사용법을 정리해본다.




[선행작업]

1. 마우스 우클릭 > 관리자 권한으로 cmd 실행
2. 원하는 디렉터리로 이동 (cd /경로)




[참고] : 문자열이 깨지는 경우

방법 1 : 파일의 인코딩 변경
메모장으로 해당파일을 열고 > 다른이름으로 저장 > 저장방식을 UTF-8로 설정 > 저장


방법2 : cmd 콘솔창의 인코딩 방식 변경 <- 추천

* cmd 콘솔창에서 아래 문구 입력
   - 인코딩 방식을 ANSI로 원할 경우 : chcp 949
   - 인코딩 방식을 UTF-8로 원할 경우 : chcp 65001






[파일명찾기. 제목찾기]

특정 문자열이 존재하는 행 찾기
dir /s /b | find /i "원하는문자열입력"
-> C:\Users\TY\Desktop\log repository>dir /s /b | find /i "원하는문자열입력"
C:\Users\TY\Desktop\log repository\a\원하는문자열입력.txt

dir /s /b | find /i "원하는문자열입력"
-> 해당사항없음

dir /s | find "원하는문자열입력"
-> C:\Users\TY\Desktop\log repository>dir /s | find "원하는문자열입력"
2019-05-20  오전 11:03                 3 원하는문자열입력.txt

dir /s | find "원하는문자열입력"
-> 해당사항없음






[파일내용찾기. 원하는문자열찾기]

findstr /s "원하는문자열입력" *.txt 
-> C:\Users\TY\Desktop\log repository>findstr /s "원하는문자열입력" *.txt 
a\zzz.txt:123

findstr /s "원하는문자열입력" *.*

-> /s가 하위경로까지 찾으므로 매우많이나옴. 특정 경로에 들어가서 입력 시 조금 나음
findstr "원하는문자열입력" *.*

findstr /n "원하는문자열입력" *mobile.log*
-> /n을 붙이면 라인수가 같이 표기됨
mobile.log:874736:DEBUG|2019-06-11,14:41:41.973|mobile|원하는문자열입력|어쩌구저쩌구

ex)
findstr /s /n "원하는문자열입력" frameplus.log
findstr /n "원하는문자열입력" *mobile.log*

 

 


[특정단어 포함 + 특정단어 미포함 찾기. 원하는문자열찾기]

ex) Mid로 검색하되 setMid는 제외

 

- 검색을 실행하는 디렉터리에서, 특정파일에 대해 "Mid"로 조회된 결과 중, "setMid"는 제외한 내용의 라인+파일명 출력
ex) type *.java | findstr "Mid" | findstr /v "setMid"

 

- 검색을 실행하는 디렉터리 및 하위디렉터리에서, 특정파일에 대해 "Mid"로 조회된 결과 중, "setMid"는 제외한 내용의 라인+파일명 출력
ex) findstr /s /n "Mid" *.java | findstr /v "setMid"

 



특정 문자열이 존재하는 행 찾기
grep -n '원하는문자열입력' frameplus.log


[알아낸 을 이용하여 특정 파일에서  특정해서 읽기]
sed -n '3709,3710p' frameplus.log
head -n 3710 frameplus.log | tail -n 2

findstr /s "원하는문자열입력" *.xml


알아낸 행을 이용하여 특정 파일에서 행 특정해서 읽기
결과출력(2개 동일)
[webapp]/webapp/frameplus/log>sed -n '3709,3710p' frameplus.log
$BL$DEBUG 2019-05-20 11:28:19 SQL       ANONYMOUS       NO-AuthInfo     SQL#.0 [Executable] SELECT NAME, PASSWORD FROM X_USER WHERE ID = '원하는문자열입력'
$BL$DEBUG 2019-05-20 11:28:19 SQL       ANONYMOUS       NO-AuthInfo     SQL#.0 [Executable] SELECT ID, NAME FROM X_USER WHERE ID = '원하는문자열입력'
[webapp]/webapp/frameplus/log>


grep -n '원하는문자열입력' frameplus.log

sed -n '8300,8800p' frameplus.log

dir /s /b | find /i "G_rn"
findstr /s "HttpRequestUtil" *.*





===================================================

참고 : http://bumrak.blogspot.com/2015/03/findstr-windows-grep.html


기본사용법 : findstr /?

■ Tag 검색
findstr /m /l "BcMc" c:\windows\system32\drivers\*.sys

■ 특정 문자열 검색
findstr 문자열1 document.txt
findstr "문자열1 문자열2" document.txt 
findstr /c:"똑같은 문자열만 찾아주세요" document.txt

■ W로 시작해서 ws로 끝나는 문자열 검색
findstr "W.*ws" document.txt

■ C: 드라이브와 하위폴더에서 문자열 검색 (대소문자 불문)
findstr /s /i 문자열1 C:\*.*

■ 파일목록내에 문자열 검색하기
findstr /f:C:\files.txt /m /l "BcMc"
findstr /g:argument.txt /f:files.txt

사용 방법 :
findstr "check" *
설명 : 현재디렉토리의 모든 파일에서 check가 포함된 라인을 출력

findstr /N "check" *
설명 : 몇번째 라인인지 확인하려면 /N 옵션 추가.

findstr /N /S "check" *
설명 : 하위 폴더까지 검색

findstr /N /S "check" *.txt
설명 : 특정 파일만 필터해서 검색하고 싶다면?

findstr /N /S "check" *.txt > findstr.log
설영 : 파일로 출력 

반응형