• -동두천 9.2℃
  • -강릉 16.8℃
  • 연무서울 9.8℃
  • 연무대전 12.4℃
  • 맑음대구 16.5℃
  • 맑음울산 15.2℃
  • 박무광주 12.0℃
  • 연무부산 13.5℃
  • -고창 5.5℃
  • 박무제주 13.1℃
  • -강화 3.9℃
  • -보은 11.3℃
  • -금산 11.2℃
  • -강진군 10.2℃
  • -경주시 12.9℃
  • -거제 13.5℃
기상청 제공

리눅스 명령어 : find

리눅스 명령어 : find

# 파일 이름으로 찾기
find ./ -name filename : 파일 이름으로 찾기


# access time 으로 파일 찾기
find ./ -atime +5 // access time이 5일 이전인 파일 찾기. 즉, access한지 5일이 넘은 파일들
find ./ -atime -5  // access time이 5일 이내인 파일 찾기. 즉, access한지 5일이 넘지않은 파일들


# 수정한 시간으로 파일 찾기
find ./ -mtime +5 // 5일 이전에 수정된 파일 찾기. 즉, 수정된지 5일이 넘은 파일들
find ./ -mtime -5 // 5일 이내에 수정된 파일 찾기. 즉, 수정된지 5일이 넘지않은 파일들


# 퍼미션으로 찾기
find ./ -perm 777 // 퍼미션이 777인 파일 찾기
find ./ ( -perm 644 -o -perm 200 ) -print


# 파일 타입이 으로 파일 찾기
find ./ -type f     // 파일 타입이 파일인 파일만 찾기(주의, 옵션에 "-"을 붙이지 않는다)
find /dev -type c -print   // 파일 타입이 c인 파일들 찾기

[옵션]
f : 파일
d : 디렉토리
l : 심볼링크
s : 소켓파일
b : block special
c : character special
p : named pipe


# 파일 크기로 찾기
##[-size n] 파일 크기가 n 이상인 파일 찾기
##[-size n] 정확히 n x 512 byte 의 길이를 갖는 파일
find ./ -size 1   // 파일 크기가 512 byte인 파일 찾기
find ./ -size +1024 -print // 파일 블럭크기가 1024 이상인 파일 찾기
find ./ -name core -size +2048 -print // 파일 이름이 core이고 크기가 2048 이상인 파일 찾기


##[-links n] 링크된 갯수가 n인 파일 찾기
find ./ -links 5 // 링크된 갯수가 5개인 파일 찾기


##[-user username] 파일 소유권이 user인 파일 찾기
find ./ -user kosthb // 파일 소유권이 kosthb인 파일 찾기


##[-group groupname] 파일 그룹이 group인 파일 찾기
find ./ -group kosthb // 파일 그룹이 kosthb인 파일 찾기


##########               처리 방법               ##########
##[-print] 찾은 파일의 경로 출력
find ./ -name filename -print // filename의 경로를 보여준다

##[-exec cmd {} ;] 찾은 파일들에 대해 cmd 명령어를 실행한다.
find ./ -name filename -exec ls -al {} ;

## 30일 이전에 엑세스된 파일중 *.c 파일을 찾는다
## 엑세스 된지 30일이 넘은 파일들을 찾는다
find ./ -name *.c -atime +30 -exec ls -l {} ;



. 시스템 관리 명령 [3] -  find

find 명령어는 시스템 관리 명령중 가장 많이 사용되는 명령어 중 하나이다.
이 명령어의 다양한 기능을 많이 알수록 관리자의 불필요한 삽질을 최대한 줄일수
있을것이다.

option :

-atime  n : 정확히 n 일 전에 access 된 파일
-mtime  n : 정확히 n 일 전에 수정된 파일
-newer [file] : file 보다 최근에 수정된 파일
-size  n  : 정확히 n x 512 byte 의 길이를 갖는 파일
-type  c  : 파일의 종류를 기술. f: 파일 d: 디렉토리
-fstype [filesystem] : 파일 시스템 종류
-name [pattern] : 파일 이름 검색
-perm  p  : 파일 접근 퍼미션이 p 인 경우
-user  [user] : 파일 소유권이 user 인 파일
-group [group] : 파일 그룹이 group 인 파일
-nouser : 파일 소유자가 /etc/passwd 에 없는 경우 
-nogroup : 파일 소유그룹이 /etc/group 에 없는 경우
-uid  n : 파일 uid 가 n 인 경우
-gid  n : 파일 gid 가 n 인 경우


단순히 위의 옵션되로 사용하면 그렇게 유용해 보이지 않을수 있겠죠.
예를 들어 누가 정확히 3일전에 접근한 파일들을 검색하겠습니까..?
하지만 +, - 기호를 이용하여 기간,시간,크기와 같은 수치들의 범위를
지정할수가 있습니다.
+ 는 ~~보다 큰 경우, - 는 ~~ 보다 작은 경우

-mtime +7 : 수정 된지 7일이 지난 파일
-mtime -7 : 수정 된지 7일이 안된 파일
-size +100 : 50kbyte 보다 큰 파일

-name 뒤엔 인용부호 (와일드 카드 문자) 를 같이 사용할수 있다.

-name *.dat : 확장자가 dat 인 모든 파일

이런 옵션들을 차례로 기술하여 파일을 찾을 경우 AND 연산이 적용된다.
하지만 -o 옵션을 이용하여 OR 을 적용할수도 있고 ( ) 를 이용하여 그
룹을 지어 적용할수도 있다. 이밖에 NOT 연산도 가능한데 옵션 앞에 !
부호를 달아 주면 된다. 밑의 몇가지 예를 살펴 보자.

# find ./ -atime +60 -mtime 120
( AND 논리연산으로 접근한지 60일 지난 파일중 수정한지 120 일 지난 파일 )

# find ./ ( -user design -o -group design )
(OR 논리연산으로 소유자나 그룹이 design 인경우 )

# find ./ ( ! -user design -o ! -group design )
(NOT 논리연산으로 소유자나 그룹이 design 이 아닌 경우 )

-perm 옵션은 숫자형태의 특정 접근 모드를 이용하여 파일을 검색하는 옵션이다.
옵션별 사용예를 들어 보자.

-perm 75 : permission = 755
-perm -002 : 모든 사람들이 기록할수 있는 파일
-perm -4000 : SUID 액세스 설정
-perm -2000 : SGID 액세스 설정

이밖에 지원 되는 내부 옵션이 있다.

-print : 대응되는 파일의 경로명을 출력
-ls : 대응되는 파일에 대한 긴 디렉토리 목록을 출력
-exec commands : 대응대는 파일에 대해 commands 명령 수행
-ok commands : 파일에 대한 commands 명령 수행전에 입력 대기 상태
-xdev : 검색 시작 디렉토리가 속해 있는 파일 시스템에 대해서만 검색 제한
-mount : IRIX 와 SCO UNIX 에서 -xdev 옵션
-prune : 서브 디렉토리는 검색을 하지 않음

-print 옵션은 근래는 기본으로 들어간다. 굳이 붙일 필요는 없고, -exec, -ok
옵션 사용시에는 반드시 마지막에 ; 으로 구문을 마감해야 한다.

예를 들어서 find 로 검색한 파일을 지우기 위해서는 다음과 같이 한다.

# find ./ -name *.* -exec rm -f {} ;

이와 같이 find 명령어를 이용한 시스템 관리 방법 예를 몇가지 들어 보겠다.

1. 파일 크기가10M 이상이며 한달 이상동안 수정되지 않은 파일을 찾는다.
# find / -type f -size +20480 -mtime +30 -ls
# find / -type f -size +20480 -mtime +30 -exec rm -f {} ;
(대응되는 파일삭제)

2. 보안에 관련된 팁이다. 모든 setuid, setgid 를 검색한다.
# find / -type f ( -perm -4000 -o -perm -2000 )
# find / -type f ( -perm -4000 -o -perm -2000 ) | diff - setuidlist
(찾아된 setuid,setgid를 기존에 작성한 목록과 비교하여 새로 추가 된것이 있는지
를 확인한다. )


# 기타 옵션
-amin N : N 분 이전 부터 access했던 file찾기
-atime N : N 시간 이전부터 access했던 file찾기
-ctime N : N 시간 이전에 상태가 변경된 파일 찾기
-mtime N : N 시간 이전에 내용이 변경된 파일 찾기
-empty : file의 크기가 0인 것을 찾기
-typec : 확장자가 c인 파일 찾기