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 문자열을 포함한 모든 파일명 및 해당 라인을 출력
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 두 문자열을 모두 포함한 파일명 및 해당 라인을 출력
사실 5번은 egrep 기본 명령어를 grep 이라는 기능을 파이프(|) 로 연결한 형태이다.
이 글에서도 기본적인 활용 예시 5개를 들었지만, 명령어를 응용하면 훨씬 다양한 방식의 검색이 가능할 것이다.
'IT | OS > UNIX' 카테고리의 다른 글
[UNIX] 리눅스 7z 파일 압축 해제 및 압축하기(설치 방법 포함) - Linux, AIX (0) | 2019.11.23 |
---|---|
[UNIX] IBM x3650 RAID5 구성하기 (0) | 2019.11.18 |
[UNIX] 서버 기본 스펙 확인(OS, CPU, MEMORY, DISK) (0) | 2019.10.20 |
[UNIX]하드링크 심볼릭 링크 차이점 및 명령어 정리(생성, 삭제) (2) | 2019.10.18 |
[UNIX] 파일 내 문자열 치환하기 (0) | 2019.10.12 |