공부한것들을 정리하는 블로그 입니다.
명령프롬프트(cmd)에서 find, findstr 사용법(특정단어찾기) 본문
자체서비스 어플리케이션의 유지보수 업무를 하다보면 로그파일을 보게되는 일이 잦다.
개인적으로 데이터베이스와 로그파일을 비교하여 원하는 정보를 색출해내기 위한 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
설영 : 파일로 출력
'잡담 > 개인보관용' 카테고리의 다른 글
자바 위키 (0) | 2022.05.25 |
---|---|
특수문자 URL 인코딩(Encode) / 디코딩(Decode) 표기 방법 (0) | 2022.01.19 |
[Eclipse] 이클립스에서 .class 파일 열기(Class Decompile) (0) | 2019.06.21 |
Eclipse Project Encoding UTF-8 (0) | 2019.06.20 |
Eclipse Spring Error : Cannot change version of project facet Dynamic Web Module to 2.5 (0) | 2019.06.20 |
jar가 포함된 maven 등 repository 검색하는 사이트 (0) | 2019.06.20 |
[oracle error] 해결: Socket read interrupted, Authentication lapse 0 ms. 또는 [Eclipse Tomcat error] : server ports required by tomcat are already in use (1) | 2019.06.17 |
svn 접속오류 (0) | 2019.06.10 |