본문 바로가기

운영/CentOS

[CentOS] find / grep 명령어

Find, Grep 명령어 정리


※ find

 - 지정한 디렉터리에서 검색

 use) find 디렉터리 옵션 [action]

 * 옵션

 > empty     : 비어있는 파일 찾기

 > uid [UID] : 지정한 UID값으로 찾기

 > gid [GID] : 지정한 GID값으로 찾기

 > user [username]    : 계정명으로 찾기

 > group [groupname] : 그룹명으로 찾기

 > nouser         : 소유주가 없는 파일 찾기

 > name [문자열]  : 이름으로 찾기

 > perm [권한]     : 지정한 권한을 갖는 파일 찾기

 > type [f/d/b/...] : 지정한 타입을 이용하여 파일 찾기

 > atime [+n/n/-n]  : access시간을 이용하여 찾기

 > mtime [+n/n/-n] : 파일 내용을 변경한 시간을 이용하여 찾기

 > ctime [+n/n/-n] : 파일 정보를 변경한 시간을 이용하여 찾기

  # n  : 정확하게 n일 전에 변경

  # +n : 현재 ~ n일 동안 변경 안되고 n일 이전에 변경

  # -n : 현재 ~ n일 동안 변경

 > size [n/+n/-n] : 크기를 이용하여 찾기

  # n  : n 크기

  # +n : n 이상

  # -n : n 이하


 * action

 > print : 리스트 출력

 > exec command {} \ : 결과에 command 적용

 > ok command {} \ : 결과에 command 적용할 것인지 물어본 후 적용

  # {} : find의 결과

  # \ : 명령어의 끝

 ex) find /root -name file1 : 루트의 홈 디렉터리에서 이름이 file1 찾기

find /root -name "file" : 루트의 홈 디렉터리에서 이름이 file로 시작하는 파일 및 디렉터리 찾기

find /root -name "[r,a][c,d]*" : 루트의 홈 디렉터리에서 이름의 첫 번째 글자가 r 또는 a, 두번째

 글자가 c 또는 d로 시작하는 파일 및 디렉터리 찾기

find /root -name "file?" : 루트의 홈 디렉터리에서 이름이 file로 시작하고 한 문자가 더 존재하는

파일 및 디렉터리 찾기

find /root -not -name "file" : 루트의 홈 디렉터리에서 이름이 file이 아닌 것을 찾기

find /root -name "file*" -exec ls -l {} \ : 루트의 홈 디렉터리에서 이름이 file로 시작하는 파일 및 

디렉터리를 찾아 ls -l command를 이용하여 출력

find / -name "[a-z]" : 이어져 있는 것들은 - 표시로 가능(a부터 z까지)

find / -name test > aaa : aaa 라는 것에 출력결과 저장

find / -perm 1777 2> /dev/null : > 앞에 2를 붙여서 접근불가 또는 에러나느 부분들을 처리하는 것

에러메시지는 쓰레기통으로 보냄


 - find 실습

1. /usr 디렉터리에서 rdate 파일 찾기

2. /usr 디렉터리에서 rd로 시작하는 파일 찾기

3. /usr 디렉터리에서 첫 번째 글자가 r 또는 a, 두 번째 글자가 c 또는 d로 시작하는 모든 파일 찾기

4. /usr 디렉터리에서 첫 번째 글자가 a 또는 b로 시작하는 4개문자로 구성된 파일 찾기

5. 자신의 계정 홈 디렉터리에서 소유자(ls -l에서 3번째 필드)가 자신의 계정인 것을 찾기

6. /root 디렉터리에서 일반 파일만 찾기

7. 최상위 디렉터리에서 심볼릭 링크 찾기




※ grep

 - 파일 또는 명령어의 결과 값에서 원하는 문자열 찾기

 use) grep [옵션] 표현식 파일

- 표현식 같은 경우 문자열이 들어가도 상관 없다. 다만 항상 같은 것을 검색하지 않기 때문에

  특정한 패턴이 있는 것들을 찾고자 할때 정규표현식 사용

 * 옵션

 > c : 찾아낸 총 행 출력

 > h : 파일 이름을 출력하지 않음

 > i : 대소문자를 구분하지 않음

 > n : 파일 내에서 행 번호를 같이 출력

 > s : 에러 메세지 외에는 출력하지 않음

 > v : 찾지 못한 행만 출력


 * 정규표현식

 > . : 아무 문자 1개

 > * : 앞에 한 문자 0회 이상 반복 = \{0,\}

 > \+ : 앞에 한 문자 1회 이상 반복 = \{1,\}

 > \? : 앞에 문자가 있거나 없거나(0회 또는 1회) = \{0,1\}

 > \{n\} : 앞에 한 문자 n회 반복(n은 숫자)

 > \{n,\} : 앞에 한 문자 n회 이상 반복

 > \{n,m\} : 앞에 한 문자 n회 이상, m회 이하 반복(n,m은 숫자)

 > \{,m\} : 앞에 한 문자 m회 이하 반복

 > \{문자열\} : 문자열을 하나로 취급

 > [] : []안의 문자 중 1개, 안에 ,(콤마) 사용 안함

ex) [asdfe], [a-z], [A-Za-z0-9]

 > [^] : []안의 문자 제외, not의 의미

 > \< : 단어의 시작

ex) grep "\<hello" file1    -> hello로 시작하는 것

 > \> : 단어의 끝

ex) grep "hello\>" file1    -> hello로 끝나는 것

 > ^ : 문장의 시작

ex) grep "^b" file1        -> b로 시작하는 것만

 > $ : 문장의 끝

ex) grep "d$" file1        -> d로 끝나는 것만

 p.s. aaa+   : aaa 중에서 +앞의 a 하나만 취급

 (aaa)+ : + 앞의 aaa를 하나로 묶어서 취급

 \|     : 바로 앞의 한 글자 또는 바로 뒤의 한 글자


 ex) grep [0-9]\{3\} file1 : file1에서 숫자 3개가 연속으로 존재하는 행 찾아 출력

 grep [0-9a-zA-Z}\{3\} file1 : file1에서 알파벳 문자나 숫자 3개로 되어 있는 단어 찾기

 grep [a-zA-Z]\{3\} file1 : 알파벳 3개로 되어 있는 단어 찾기


 p.s. grep . file1 : file1에 문자가 존재하면 그 행을 출력

  grep abc. file1 : file1에 abc로 시작하고 뒤에 문자 1개가 존재하면 그 행을 출력



-> 일종의 앞에 패턴을 검색함







'운영 > CentOS' 카테고리의 다른 글

[CentOS] User, Group 관리  (0) 2015.12.30
[CentOS] vi, vim 활용  (0) 2015.12.19
[CentOS] 리눅스 디렉터리 구조  (0) 2015.12.07
[CentOS] 기초명령어 실습  (0) 2015.12.06
[CentOS] 기초명령어  (2) 2015.11.22