find 02

OS/리눅스 & 유닉스 2011. 11. 24. 11:02

find란 ?

윈도우에서 어떤 파일을 찾고싶을 때 찾는위치를 기준으로 하여 특정 파일을 검색해주는 것과 같이

리눅스에서도 find라는 명령어를 사용하게 되면 조건에 맞는 파일을 찾을 수 있고 윈도우에서 그 찾은 파일들을 실행을

할 수 있는 것처럼 리눅스에서도 그 찾은 파일들에 대해 명령을 실행할 수도 있다.

 

이러한 find명령어의 막강한 기능 중 하나는 모든 파일 내에서 특정 파일을 찾거나, 최근에 수정된 파일을 찾거나

 n바이트의 용량을 가진 파일을 찾기 등과 같은 정말 많은 기능을 가지고 있다.

 

그러면 이제 find명령어를 사용하는 방법과 옵션들에 대해 알아보자.

 

# find [directory] [option] [action]

 

먼저 directry는 찾고자 하는 디렉토리의 기준 위치를 지정해 준다.

[디렉토리 경로]

. : 현재 디렉토리를 기준으로 검색을 한다.

/ : 루트 디렉토리를 기준으로 모든 디렉토리의 파일을 찾는다.

 

그 다음 option에는 매우 많은 검색 조건들이 포함되며 다음과 같은 것들이 있다.

 

[검색 조건]

-name filename : 파일 이름으로 찾는다.

-atime +n : n일 이전에 접근한 파일을 찾는다.

-atime -n : 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이름으로 찾는다.

-uid UID : 지정한 UID값을 가진 파일들을 찾는다.

 

마지막 action에는 그 찾은 파일들에 대해 어떻게 처리할 것인지 처리방법이 있다.

 

[처리 방법]

-print : 찾은 파일의 절대 경로명을 화면에 출력한다.

-exec command {} \; : 찾은 파일들에 대해 command(명령어)를 실행한다.

-ok command : exec와 비슷하나 명령어를 적용하기 전에 물어본다.

 

다음 예제를 봐서 실습하자.

 

# find . -name *aaa

현재 디렉토리 이하에 전체에서 앞에 무엇이 오던지 간에 aaa가 포함된 파일 및 폴더 찾기

 

# find . -name aaa*

현재 디렉토리를 기준으로 하여 aaa로 시작하는 모든 파일 및 폴더를 찾는다.

 

# find / -mtime -1

'/' 최상위 디렉토리를 기준으로 하여 모든 디렉토리에서  24시간 이내 수정된 모든 파일 및 폴더를 찾는다.

 

# find . -name {a,b,c,d}.txt

현재 디렉토리와 하위디렉토리에서  a.txt, b.txt, c.txt, d.txt 파일을 찾는다.

 

# find / -user user1 -exec rm {} \;

'/'를 기준으로 하여 'user1'이라는 유저가 만든 모든 파일을 찾아 삭제한다.

 

# find /home '*.txt' -exec rm {} \;

'/home'디렉토리를 기준으로 하여 하위디렉토리에서 .txt라는 확장자 이름을 가진 모든 파일을 찾아 삭제한다.

 

# find ~root -name *.jsp -print 로 끝나는 파일 찾기

root유저의 홈 디렉토리아 이하 전체에서 .jsp로 끝나는 파일을 찾는다.

 

# find /root -size +1000k

/root 디렉토리 이하 전체에서 크기가 1000k 이상인 파일을 찾는다.

 

# find / -name *.ppt -exec mv {} /tmp \;

모든 디렉토리중 ppt문서만 찾아서 /tmp라는 디렉토리로 이동시킨다.

 

# find /dev -type d -print

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

 

# find /home -name text -exec ls -l {} \;

파일 이름이 text인 파일을 찾아서 ls -l명령어를 적용한다.

 

# find /home -atime +30 -print

30일 이전에 접근되었던 파일을 찾는다.

 

#find /home -mtime -7 -print

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

 

# find /tmp -type l -exec ls -ila {} \;

/tmp 디렉토리 이하에서 링크 파일을 찾아 상세정보를 출력

 

# find / -name '[b,u][c,g]*' -print

첫번째 글자가 b 또는 u로 시작하고 두번째 글자가 c또는 g로 시작하는 모든 파일 찾기

'OS > 리눅스 & 유닉스' 카테고리의 다른 글

dbx 명령  (0) 2011.11.24
find 03  (0) 2011.11.24
find 01  (0) 2011.11.24
grep 옵션  (0) 2011.11.24
유닉스 작업 시간 측정 (마이크로세컨드)  (0) 2011.11.21
: