FIND 명령어

서버관련/Command2011. 4. 21. 12:14HanQ eNFO

find - 파일찾기


find 명령어는 파일 시스템에서 주어진 조건으로 파일을 찾는다.

사용법을 살펴보자.


find 대상디렉토리 검색 조건 처리 방법

대상 디렉토리 : 찾기를 시작할 디렉토리를 지정한다. 
검색 조건 : 찾을 조건을 지정한다. 
-name filename 
파일 이름으로 찾는다. 
-atime +n 
access time 이 n일 이전인 파일을 찾는다. 
-atime -n 
access time이 n일 이내인 파일을 찾는다. 
-mtime +n 
n일 이전에 변경된 파일을 찾는다. 
-mtime -n 
n일 이내에 변경된 파일을 찾는다. 
-perm nnn 
파일 권한이 nnn인 파일을 찾는다. 
-type x 
파일 타입이 x인 파일들을 찾는다. 
-size n 
사이즈가 n이상인 파일들을 찾는다. 
-links n 
링크된 개수가 n인 파일들을 찾는다. 
-user username 
user이름으로 찾는다. 
-group groupname 
group 이름으로 찾는다.

처리방법 : 찾은 파일을 어떻게 할 것인지를 지정한다. 
-print 
찾은 파일의 절대 경로명을 화면에 출력한다. 
-exec cmd {};  
찾은 파일들에 대해 cmd 명령어를 실행한다.


예를 들어보자. 
$ find /user4 -name test* -print

/user4 아래에서 파일이름이 test로 시작하는 모든 파일을 찾아서 화면에 
보여준다.

$ cd / 
$ find . -name ping -print

root 디렉토리 밑에서 파일이름이 ping인 파일을 찾아 절대 경로명을 화면에 
출력한다.

$ cd / 
$ find /usr -name *.c -print

/usr 밑에 이름이 .c로 끝나는 모든 파일들을 찾아 경로명을 보여준다.

$ cd / 
$ find $home -name who.txt -print

home 디렉토리 아래에 who.txt라는 파일을 찾아 경로명을 보여준다.

$ cd / 
$ find . -type d -print

파일 타입이 d인 파일을 찾아 경로명을 화면에 출력한다.

$ cd / 
$ find /dev -type c -print

/dev디렉토리 아래에서 파일 타입이 c인 파일을 찾아 경로명을 보여 준다.

$ cd / 
$ find . -perm 700 -print

파일 권한이 700인 파일을 찾아준다.

$ cd / 
$ find . \ ( -perm 400 -o -perm 200 ) -print

파일 권한이 400인 파일과 200인 파일을 찾아준다. 
(주의 : "\"의 앞뒤에 space 가 반드시 있어야 한다.)

$ cd / 
$ find . -size +1024 -print

파일의 블럭 크기가 1024 이상인 파일을 찾아준다.

$ cd / 
$ find . -name core -size +2048 -print

파일 이름이 core이고 크기가 2048블럭 이상인 파일을 찾아준다.

$ cd / 
$ find . -user unix01 -print

파일 소유자가 unix01인 파일을 찾아준다.

$ cd / 
$ find . -group unix -print

사용자그룹이 unix인 파일을 찾아준다.

$ cd / 
$ find . -atime +30 -print

30일 이전에 억세스되었던 파일을 찾는다.

$ cd / 
$ find . -mtime -7 -print

7일 이내에 수정된 적이 있는 파일을 찾는다.

$ cd / 
$ find . -name core -exec ls -l {} \;

이름이 core인 파일을 찾아서 ls -l 한다.

$ cd / 
$ find . -name \*.c -atime +30 -exec ls -l {} \;

30일 이전에 억세스된 파일 중 *.c를 찾아 ls -l 한다.

$ cd / 
$ find . -name core -exec rm -i {} \;

현재 디렉토리 밑에서 이름이 core인 파일을 찾아 지운다(지우기 전에 정말 
지울 지를 물어본다.)

find ./ -size +100 -exec ls -al {} ;

find /var/spool/mail -atime +5 -exec rm {} ;

아래는 특정한 문자열을 검색하여 파일명을 출력하여 줍니다. 
find . -type f -exec grep "string" /dev/null {} ;

주의할 것은 조건에 맞는 파일의 개수가 많은 경위 쉘의 명령행 버퍼의 범위를 벗어나므로 문제가 생길수 있다는 것입니다.

명령행 버퍼의 오버플로우를 방지하기 위해서 다음과 같이 하십시요.

find . -type f | xargs grep "string"


여기서 string는 검색 문자열입니다. 

-----------------------------------------------------------

유닉스 시스템에서 어떤 큰 화일이 시스템을 소비하는지 
알고 싶으세요? 
그렇다면 아래와 같이 입력해보세요.

큰 화일이 sort되어서 나온답니다.

find /var -mount -ls -xdev | /usr/bin/sort -nr +6 | more


또 다른 예로 매주 일요일 새벽 2시에 access한 날짜가 2일 이상인 파일을
/tmp 에서 지우려면
0 2 * * 0 find /tmp -atime +2 -exec rm {} ;

이 글은 스프링노트에서 작성되었습니다.

'서버관련 > Command' 카테고리의 다른 글

linux 텍스트파일 분할  (0) 2012.11.07
일괄 문자 치환(사이트 이전시 유용)  (0) 2011.04.21
Vi editor  (0) 2011.04.21
tar 압축관련  (0) 2011.04.21
FIND 명령어  (0) 2011.04.21
리눅스내 파일내용 일괄변경  (0) 2008.06.05
블로그 주인 사진AuthoreNFO
자주 잊어먹는것들을 기록해 놓을려고합니다.^^