개발/Linux

리눅스 6편-파일찾기 find/grep에 대해 알아보자

IT하는 문과생 2019. 10. 8.

지난 시간까지 디렉터리도 만들어보고 vi 편집기를 통해 새로운 파일도 만들어 보았다. 그러면 이제 다음 과정으로 리눅스 내에서 파일을 찾는 방법에 대해 알아보고자 한다. 기본적으로 파일이 어디에 어떤 것이 위치해 있는지 모두 다 기억하고 있으면 좋겠지만 사람의 기억력이라는 것이 사실 그렇게 좋지 않다. 그리고 리눅스는 이러한 사용자들을 위해 다양한 찾기 기능을 제공해 주고 있는데, 그 가운데 find 및 grep 기능에 대해 살펴보는 시간을 갖도록 하겠다.

관련 글
2019/09/26 - [Linux 이야기] - 리눅스 1편-맥(Mac)에 Linux 설치하기(Ubuntu)
2019/09/27 - [Linux 이야기] - 리눅스 2편-Ubuntu 루트(root) 계정을 활성화해보자
2019/09/28 - [Linux 이야기] - 리눅스 3편-리눅스의 디렉터리 구조를 파악하자
2019/09/30 - [Linux 이야기] - 리눅스 4편-기본 명령어 편
2019/10/07 - [Linux 이야기] - 리눅스 5편-vi 편집기에 대해 알아보자

1. find
자 그럼 find 기능부터 살펴보도록 하자. find와 grep은 무언가를 찾는다는 것의 공통점이 있지만 기본적으로 탐색 범위가 다르다. 지금부터 살펴볼 find의 경우 계층적인 디렉터리 구조에서 특정 파일 및 디렉터리를 검색하기 위한 명령어이며, 다음과 같이 구성된다.

find [경로] [조건] [동작]

경로 -> 조건 -> 동작 순서로 입력을 하는데 경로는 여러분들이 익히 알고 있는 디렉터리 경로를 의미하며 조건과 동작은 아래와 같은 옵션들이 존재한다. 많이 써보면서 손에 익히도록 하자.

조건 설명
-name  이름으로 검색
-type 종류 지정,  f(파일),  d(디렉토리)
-user 특정 사용자가 소유한 파일 검색
-size 파일의 특정 크기 검색 (+이상, -이하, -바이트c, 킬로k, 메가 M, 기가 G)
동작 설명
-print 기본 값, 터미널에 파일의 경로와 이름을 출력
-ls  자세한 정보 표시
-exec [특정 명령어] { }\; 검색한 파일에 특정 명령어 수행
-ok  [특정 명령어] { }\; 검색한 파일에 특정 명령어 수행, 대화식
[예제]
-시스템 전체에서 파일의 이름이 test인 것을 찾아라.
find / -name test -type f

-사용자 홈 디렉터리에 숨겨진 파일을 찾고 해당 파일의 정보를 출력
find / ~-name '.*' -ls

 

2. grep
이어지는 검색 옵션 가운데 하나로 grep이라는 기능이 있다. grep은 파일 내용에서 특정 문자 또는 패턴을 검색하는 명령어로써 파일명으로 검색하던 find와 다르게 파일 내용에서 특정 문자나 패턴을 검색할 수 있는 강력한 명령어라고 할 수 있다. grep 명령의 경우 다음과 같은 형식으로 사용된다.  

grep [옵션] [패턴] [파일 이름]

옵션을 선택하고 패턴을 지정한 다음 어떠한 파일에서 찾아낼 것인지를 지정하여 검색을 시작한다. 이것이 grep의 기본이다. 사실 지금 이렇게 글로만 보면 어렵다고 느낄 수 있지만 실제 리눅스 상에서 직접 조회를 해본다면 그렇게 크게 어렵지 않을 것이다.

옵션 설명
-i 검색 패턴 대소문자 무시
-n 매칭되는 줄 번호 표시
-v 검색 패턴 제외하고 나머지를 출력
-c 검색 패턴과 매칭되는 줄 개수 출력
-w 단어 단위로 검색
-l 매칭되는 패턴이 있는 파일 이름 출력
[예제]
grep -l bash /etc/*

여기까지 find 옵션 및 grep 옵션을 알아보는 시간을 가졌다. 앞선 시간에 공부했던 기본 명령어 / vi 편집기 사용과 더불어 이번 시간의 find/grep 옵션까지 자연스럽게 다룰 줄 안다면 이제 리눅스를 어느 정도 다룰 수 있다고 말할 수 있겠다. 적어도 필자의 포스팅에 기재된 옵션 설명을 보면서 하더라도 쓸 줄만 안다면 어느 정도는 익혔다고 볼 수 있다. 어쨌든 뭔가를 보고 하더라도 기본 바탕이 없으면 그것 조차 할 수 없으니 말이다. 여기까지 왔다면 그래도 처음에 비해 많은 발을 내디뎠다. 조금만 더 힘내자.

댓글