Unix 장비에서는 파일을 찾을 때 Command를 사용해야 한다는 불편함이 있다.

하지만 파일 내 문자열 검색과 같은, Window 에서는 다소 복잡할 수 있는 기능 역시 한 줄의 명령어로 실행할 수 있다는 장점이 있다.

이러한 점 때문에 윈도우에 있는 파일을 Unix 서버에 올려서 대용량의 파일에서 원하는 문자열을 추출하기도 한다.

그럼 파일 명 검색 및 문자열 검색 명령어를 알아보자.

 


0. 테스트 파일

아래의 명령어에 대한 결과를 쉽게 알기 위해 샘플 파일을 만들었다.

파일 위치

   -/home/commands/

파일 명

   -test1.txt / test2.log / test3.txt

각 파일의 내용은 cat 명령어를 통해 조회했다.

 


1. 파일 이름 검색(파일명 검색)

   -파일 이름의 전체 또는 일부를 알고 있을 때 사용한다.

#find /home -name "파일명" -print

ex)find /home -name "test1.txt" -print

   =>/home 및 하위 디렉토리에서 이름이 test1.txt 인 파일 검색

파일 경로/파일명 출력

* 를 활용하면 특정 확장자 파일 전부를 검색할 수 있다.

   ex)find /home -name "*.log" -print

   =>/home 및 하위 디렉토리에서 확장자가 log인 파일만 검색

 


 

 

2. 파일 내 문자열 검색

   -특정 문자열을 포함하는 파일명 및 그 라인을 출력한다.

#find /home/commands -type f -print | xargs grep -i "문자열"

ex)find /home/commands -type f -print | xargs grep -i "green"

   =>/home/commands 폴더 및 하위 디렉토리에서 green이라는 문자열을 포함한 파일명 및 해당 라인을 출력

파일 경로/파일명 : 해당 라인 출력

 


3. 파일 내 문자열 검색(특정 확장자 파일)

   -특정 확장자 파일에서만 문자열을 검색한다.

#find /home -name "*.txt" | xargs grep 문자열

ex)#find /home -name "*.txt" | xargs grep green

   =>/home 디렉토리 및 하위 디렉토리에서 확장자가 .txt 파일 중에서 green 이라는 문자열을 포함한 파일 명 및 해당 라인을 출력

파일 경로/파일명 : 해당 라인 출력

 


4. 파일 내 문자열 검색(여러 개의 문자열 동시에 찾기 | OR 조건)

   -3번과 같은 역할을 하지만, 찾아야 할 문자열이 여러 개일 수 있다.

   -1~2개 라면 3번 명령어를 두 번 반복해야 하지만 10, 20개가 넘어간다면 여간 복잡한 일이 아니며 중복된 항목은 별도 처리 해야만 한다.

   -이처럼 n 개의 문자열을 검색할 때 사용되며, or 조건이므로 입력한 문자열 중 하나라도 포함된 라인을 모두 출력한다.

#egrep -i '(문자열1|문자열2|문자열3 . . . |문자열n)' /home/commands/*

ex)egrep -i '(green|red)' /home/commands/*

   => /home/commands 폴더 및 하위 폴더에 있는 파일 중 green 또는 red 문자열을 포함한 모든 파일명 및 해당 라인을 출력

blue 또는 green을 포함한 모든 결과 출력

 


5. 파일 내 문자열 검색(여러 개의 문자열 동시에 찾기 | AND 조건)

   -4번과 같은 원리지만 입력한 모든 문자열을 동시에 가지고 있는 라인을 찾아 출력한다.

#egrep -i '(문자열1)' /home/commands/* | egrep -i '(문자열2)' | egrep -i '(문자열3)' ... | egrep -i '(문자열n)'

ex)egrep -i '(green|red)' /home/commands/*egrep -i '(green)' /home/commands/* | egrep -i '(red)'

   => /home/commands 폴더 및 하위 폴더에 있는 파일 중 green 과 red 두 문자열을 모두 포함한 파일명 및 해당 라인을 출력

green, red 모두 포함한 라인만 찾아 출력

 

사실 5번은 egrep 기본 명령어를 grep 이라는 기능을 파이프(|) 로 연결한 형태이다.

 

이 글에서도 기본적인 활용 예시 5개를 들었지만, 명령어를 응용하면 훨씬 다양한 방식의 검색이 가능할 것이다.

+ Recent posts