리눅스에서 매우 유용하게 사용되는 find 명령어에 대해 알아보겠습니다
find 명령어는 이름 그대로 파일을 찾는 명령어이며 사용법은 아래와 같습니다.
find 경로 [옵션]
간단한 사용 예로는
find / -name test.txt
> 전체경로(/)아래에 이름이(-name) test.txt인 파일을 찾아라
라는 의미가 됩니다.
1. 경로
경로는 일반적인 리눅스 파일시스템 경로와 동일합니다.
/ 를 주게 되면 최상위 경로,
. 은 현재 디렉토리,
/디렉토리명 은 지정한 디렉토리 경로가 됩니다.
3가지 경로 모두 지정한 시작 위치에서 하위 디렉토리를 모두 포함하여 검색합니다.
2. 옵션
-name 파일이름
파일이름으로 검색. * 문자 사용 가능. ex) *.txt, *abc*
-iname 파일이름
대소문자 구분 없이 이름으로 검색. 위의 방식은 대소문자를 구분한다.
-prem +권한/-권한/권한
권한으로 검색.부호가 없을 시 해당 권한을 바로 검색합니다.
※ - , + 권한
간단하게 얘기해서 -는 해당 권한을 모두 포함하는 파일을 검색하는 조건이고,
+는 해당 권한 중 하나라도 포함하는 파일을 검색하는 조건입니다.
ex) find /tmp -perm -300 이라고 명령을 날렸다고 합시다.
300 퍼미션은 풀어보면, 소유자에 대하여 w(쓰기), x(실행)의 권한이 됩니다.
이 퍼미션을 - 조건을 줘서 날렸으니, 소유자에 대해 w,x의 권한이 둘 다 있는 파일만을 검색하게 됩니다.
이에 반대로, + 조건을 줘서 명령을 날리면, 소유자에 대해 w나 x 중 둘 중 하나라도 포함하는 파일을
검색하게 되는 것이죠.
-type 파일타입
파일의 타입을 지정하여 검색 (d : 디렉토리, f : 파일, l :링크, s : 소켓 등)
-size -크기/+크기/크기
파일 크기로 검색합니다. 여기서의 부호는 위의 perm 보다 훨씬 단순합니다.
-는 해당 크기 이하, +는 해당 크기 이상, 아무것도 붙이지 않으면 해당 크기인 파일을 찾게 됩니다.
-atime +n/-n/n
엑세스 시점으로 검색. cat, sort, open() 등을 하였을 때
-ctime +n/-n/n
파일의 속성값이 바뀐 시점으로 검색. (권한,inode,소유주 등)
-mtime +n/-n/n
파일의 내용이 바뀐 시점으로 검색. 파일의 크기가 속성이므로 ctime도 갱신됩니다.
파일의 크기가 바뀌지 않아도 mtime 자체도 파일의 속성이므로 ctime이 변경됩니다.
즉, mtime의 변경 == ctime의 변경입니다.
n은 정확히 n일 이전, +n은 n일 이후, -n은 n일 이전입니다.
-mtime +3이면 수정된지 3일 이상 파일, -mtime -3이면 수정된지 3일 이내의 파일이 됩니다.
아래 그림은 atime,ctime,mtime 옵션에 대한 설명을 그림으로 아주 잘 설명해주셔서 퍼왔습니다
출처 :
http://mapoo.net/os/oslinux/find%EB%A1%9C-%EA%B2%80%EC%83%89%EC%8B%9C-%EC%98%B5%EC%85%98%EC%9D%98-atime-ctime-mtime%EA%B3%BC-%EC%A1%B0%ED%95%A9%EB%90%98%EB%8A%94-%EC%8B%9C%EA%B0%84-%EA%B8%B0%EC%A4%80%ED%91%9C/
-user 유저명
유저명으로 검색
-group 그룹
그룹명으로 검색
-nouser
소유자가 없는(/etc/passwd에 없는) 파일 검색
-nogroup
그룹이 없는(/etc/groups에 없는) 파일 검색
-exec 명령어 {} \;
검색된 파일들에 대하여 지정한 명령어를 실행한다.
{}는 find의 검색으로 나온 결과들을 의미하고, 세미콜론은 명령어의 끝을 의미합니다.
세미콜론을 그냥 사용하면 특수문자로 인식하여 find 명령어에게 전달되지 않으므로
앞에 \ 문자를 입력하여 인식되도록 해주어야 합니다.
-newer 파일
지정한 파일보다 이후에 변경(수정)된 파일을 검색
-maxdepth n
경로의 깊이를 지정하여 검색. -maxdepth 1 옵션을 주게 되면 지정한 경로의 1뎁스에서만
파일을 찾게 된다. 1뎁스란 자기 자신을 의미하므로 하위 디렉토리 검색을 안 하겠다는 의미가 된다.
찾은 파일들을 표준 출력으로 출력함. default 설정 되어 있다.
default로 하지 않는 시스템도 있으므로 항상 붙이는 습관을 두는 것이 좋다.
-empty
비어있는 파일/디렉토리를 검색
3. 연산자
( ) : 괄호() 안의 연산이 먼저 진행됨. 괄호를 인식시키려면 앞에 \를 써줘야 함.
ex) find / \(-name *test*\) -perm 300
! expr : 부정 연산자. 결과를 반대로 한다.
expr1 -a expr2 : and 연산자. expr1과 expr2가 동일해야 참.
epxr1 -o expr2 : or 연산자. expr1과 expr2 둘 중 하나만 동일해도 참
감사합니다.
'Linux' 카테고리의 다른 글
rpm 명령어 간단 정리 (0) | 2016.10.03 |
---|---|
백그라운드 포그라운드 전환, 백그라운드 종료 (0) | 2016.10.02 |
find를 이용하여 특정 기간 내 파일 찾기 (0) | 2016.06.13 |