kkamagi's story

IT, 정보보안, 포렌식, 일상 공유

OS

findstr 명령어

까마기 2020. 6. 2. 09:25
728x90
반응형

* 기본사용법 : findstr /? 

 

<사용법 예시>

■ PoolMon.exe 를 사용할때.. 커널드라이버 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

 

 

 

(컴퓨터 프로그램 루프처럼) 앞에 나오는 공백에 상관없이 "FOR"라는 단어를 포함하고 있는 모든 줄을 찾고 찾은 줄 앞에 번호를 넣으려면 다음과 같이 입력합니다.

 

> findstr /b /n /c:" *FOR" *.bas

 

 

 

동일한 파일 집합에서 여러 다른 항목을 검색하려면 각 검색 기준이 새 줄에서 시작하는 텍스트 파일을 만듭니다. 

 

또한 검색할 정확한 파일 목록을 텍스트 파일로 작성할 수도 있습니다. 

 

Finddata.txt 파일의 검색 기준을 사용하여 Filelist.txt의 파일 목록을 검색한 다음 

 

Results.out 파일에 결과를 저장하려면 다음과 같이 입력합니다.

 

> findstr /g:finddata.txt /f:filelist.txt > results.out

 

 

 

현재 디렉터리와 모든 하위 디렉터리에서 computer라는 단어를 포함하는 모든 파일을 

 

대/소문자를 구분하지 않고 찾으려면 다음과 같이 입력합니다. 

 

> findstr /s /i /m "\" *.*

 

 

 

"computer"뿐만 아니라 "compliment" 및 "compete"와 같이 comp로 시작하는 모든 단어를 찾으려면 다음과 같이 입력합니다.

 

> findstr /s /i /m "\ 

 

> findstr /v /i /g:search.txt dbcc.* > findstr.out

 

여기서 search.txt는 검색 문자열이 들어 있는 파일이며 dbcc.*는 검색할 DBCC 출력 파일 그룹과 일치하고 findstr.out은 검색 결과의 대상 파일입니다.

 

/v 매개 변수는 목록에 있는 것을 제외한 모든 문자열을 찾는 "역 일치"를 나타냅니다. 

 

 

 

> findstr /i /g:search.txt errorlog*.* | findstr /v /i /g:exclude.txt > f.out

 

여기서 search.txt는 검색 문자열이 들어 있는 파일이고 errorlog*.*는 검색할 SQL Server 오류 로그 파일이며 exclude.txt는 제외시킬 검색 문자열이 들어 있는 파일이고 f.out은 검색 결과를 넣을 파일입니다. 

 

이 접근 방법은 각 단계마다 연속으로 더 많은 문자열을 제외시키면서 계단식으로 배열할 수 있습니다. 

 

 

 

> findstr /i /g:search.txt errorlog*.* && batch1

 

Batch1.bat은 프로그램을 호출하거나 SQL Server의 xp_sendmail 기능을 통해 ISQL 작업을 실행하여 운영자에게 문자를 알리는 메일 메시지를 보낼 수 있습니다. 

 

-------------------------------------------------------------------------------------------------------------------------------

 

echo off

 

:start

 

findstr /i /g:search.txt errorlog*.* | findstr

 

/v /i /g:exclude.txt && (echo WARNING & batch1)

 

goto start

 

----------------------------------------------------------------------------------------------------------------------------------

 

> findstr /s /i /c:"error.*605" errorlog*.* > srch.out

 

FOR /F %f IN (srch.out) do copy %f c:\results

 

이름 목록이 들어 있는 파일의 각 파일 이름에 대해 프로그램을 실행하는 방법을 나타낸 것입니다. 

 

 

 

> findstr foo *

 

라고 하면, 현재 디렉토리의 모든 문서에서, foo 라는 문자열이 들어 있는 문서를 찾아서 그 행을 보여 줍니다.

 

이것은 일반 문자열 찾기이고, 정규식을 사용하려면 가령

 

 

 

> findstr \^foo$ *

 

이것은 ^foo$ 라는 정규식을 사용한 예입니다. 정규식에서 ^ 은 행의 처음, $는 행의 마지막을 의미하기에, 

 

^foo$ 의 의미는, foo 로만 이루어진 행을 찾으라는 뜻이 됩니다. 

 

그렇지만 윈도우에서 ^ 이런 캐럿 기호는 특수한 의미로 사용되는 문자이기에, ^ 앞에 백슬래쉬(\)를 붙여서 이스케이프해 주었습니다.

 

 

 

 

 

■ 만약 문자열을 찾으려면

 

> findstr ^ *

 

이렇게 이스케이프해 주어야 합니다. 도스창에서 <> 기호는 재지향에 사용되는 특수기호이기 때문입니다.

 

실은 도스창의 이스케이프 기호가 바로 ^ 입니다.

 

 

 

반응형

'OS' 카테고리의 다른 글

echo 명령어  (0) 2020.06.03
윈도우 터미널에서 리눅스 접속하기  (0) 2020.06.03
리눅스 wget 명령어 사용 예제  (0) 2020.03.29
배치 파일 명령어 모음(작성중)  (0) 2020.03.25
[Linux] MAC time 확인  (0) 2020.03.12