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 |