리눅스 파일 찾기 명령어 [ find ]
- find [디렉토리] [옵션] : 지정한 디렉토리 하위를 옵션에 따라 모두 검색한다.
옵션 |
설명 |
-empty |
비어 있는 파일 찾기 |
-gid GID |
지정한 GID 값의 파일 찾기 |
-uid UID |
지정한 UID 값의 파일 찾기 |
-user 사용자명 |
지정한 사용자가 소유하고 있는 파일 찾기 |
-group 그룹명 |
지정한 그룹이 소유하고 있는 파일 찾기 |
-nouser |
소유주가 없는 파일 검색 (사용자 계정을 삭제했을 경우 사용자가 생성한 파일들을 남기는 경우가 있다.) |
-nogroup |
소유그룹이 없는 파일 검색 |
-name [파일명] |
지정한 패턴을 갖는 파일 찾기 (파일명 또는 확장자를 기준으로 검색한다. ) |
-newer [파일명] |
보다 최근에 생성된 파일 찾기 (생성) |
-anewer [파일명] |
보다 최근에 읽기가 수행된 파일 찾기 (접근) |
-cnewer [파일명] |
보다 최근에 상태가 변경된 파일 찾기 (수정) |
-perm [권한] |
권한과 일치하는 파일을 찾는다. |
-type [파일타입] |
파일의 탑입에 맞는 파일 찾기 d : 디렉토리(directory) c : 캐릭터 특수 파일(character deice) f : 일반파일(file) b : 블록 특수 파일(block device) l : 심볼릭 링크(link) p : 파이프(pipe) s : 소켓(socket) |
-atime +n /-n/n |
최근 n일 이전에 access 된 파일 찾기 (access time) +n : n일 또는 n일 이전에 접근한 파일 -n : 오늘 부터 n일 전 사이에 접근한 파일 n : n일 전에 접근한 파일 |
-ctime +n/-n/n |
파일의 퍼미션을 마지막으로 변경한 파일 찾기 (changed time) +n : n일 또는 n일 이전에 퍼미션 변경한 파일 -n : 오늘 부터 n일 전 사이에 퍼미션 변경한 파일 n : n일 전에 퍼미션 변경한 파일 |
-mtime +n/-n/n |
data를 마지막으로 수정한 파일 찾기 (modified tiem) +n : n일 또는 n일 이전에 수정한 파일 찾기 -n : 오늘 부터 n일 전 사이에 수정한 파일 찾기 n : n일 전에 수정한 파일 찾기 |
-size |
저장한 파일 크리로 파일 찾기 |
-depth |
별도로 지정할 필요가 없으며 서브 디렉토리가지 찾는 옵션 |
-mount |
다른 파일시스템의 디렉토리는 검색하지 않는다. |
-prune |
서브 디렉토리로 내려가지 않고 현재 디렉토리에서만 검색 |
-samefile [파일명] |
링크된 파일 찾기 (하드링크) |
-lname "*이름" |
링크된 파일 찾기 (심볼릭 링크) |
-inum [inode번호] |
inode번호로 찾기 |
action |
설명 |
|
찾은 파일리스트를 보여줌 |
-exec command {} \; |
찾는 파일과 디렉토리에 지정한 명령어 적용 |
-ok command {} \; |
exec와 비슷하나 명령 적용 전에 물어봄 |
예제 1) -empty
# cat > file1 : file1에 데이터 입력
# Ctrl + z : 저장 후 종료
# touch file2 file3 : 데이터가 없는 파일 생성
# ls -l : 생성된 파일들 확인
# mkdir dir1 : dir1이라는 디렉토리 생성
# touch dir1/file4 : dir1 디렉토리 안에 빈파일 file4를 생성
# mkdir -p dir1/dir2 : dir1 디렉토리 안에 dir2디렉토리 생성
# touch dir1/dir2/file5 : dir1 안에 -> dir2 안에 빈파일 file5 생성
# find . -empty : 현재 경로에서 비어있는 파일 찾기
※ 현재경로에서 부터 하위 경로까지 비어있는 파일들을 찾는 것을 알 수있다.
예제 2) -uid UID , -gid GID
# cd /home/tester : tester계정의 홈디렉토리로 이동한다.
# touch root_file1 root_file2 : root 계정으로 root_file1, root_file2 파일 생성
# su tester : tester 계정으로 접속
# touch tester_file1 tester_file2 : tester 계정으로 tester_file1, tester_file2 파일 생성
# mkdir dir1 : tester 계정으로 dir1 디렉토리 생성
# touch dir1/tester_file3 dir1/tester_file4 : tester 게정으로 dir1 디렉토리 안에 2개의 파일 생성
# su - : 관리자 계정으로 다시 접속
# cd /home/tester : tester의 홈디렉토리로 이동
# ls -an : 현재 경로에 있는 모든 파일들을 출력 단, gid / uid 값을 숫자로 표시
# ls -an : 현재 경로에 있는 모든 파일들을 출력 단, gid / uid 값을 숫자로 표시
# find . -gid 500 : gid가 500인 모든 것을 검색
# find . -uid 0 : uid가 0인 모든 것을 검색
※ 현재경로에서 부터 하위 경로까지 비어있는 파일들을 찾는 것을 알 수있다.
에제 3) -empty , -uid , -gid 동시 사용
# cat > file1 : root 계정으로 데이터 있는파일 file1 생성
# Ctrl + z : 저장 후 종료
# cat > file2 : root 계정으로 데이터 있는파일 file2 생성
# Ctrl + z : 저장 후 종료
# ls -an : 현재 경로에 있는 모든 파일들을 출력 단, gid / uid 값을 숫자로 표시
# find . -empty -gid 0 : 데이터가 비어있으면서 gid가 0인 파일 검색
# find . -empty -gid 0 -uid 0 : 데이터가 비어있으면서 gid가 0이고 uid가 0일 파일 검색
예제 4) -user , -group
# touch file1 file2 file3 : root계정으로 file1, file2, file3 파일일 생성
# ls -al : 현재경로에 있는 모든 파일 확인
# find . -user root : user명이 root인 파일 검색
# find . -group root : 그룹명이 root인 파일 검색
예제 5) -nouser , -nogroup
# useradd test_user : test_user 계정 생성
# su test_user : test_user 계정으로 접속
# cd ~ : test_user 계정의 홈디렉토리로 이동
# touch file1 file2 file3 : file1 , file2 , fiel3 파일들을 생성
# su - : root계정으로 접속
# userdel test_user : test_user 계정은 삭제되지만 test_user의 홈디렉토리는 남는다.
(같이 생성된 test_user 그룹도 삭제가 된다.)
# ls /home/ : 홈디렉토리 파일에서 test_user 계정의 홈디렉토리가 남았는지 확인
※ 계정을 삭제하면서 계정의 홈디렉토리까지 삭제 할려면 옵션 [ -r ]을 사용하면 된다.
# cd /home/ : 홈디렉토리로 이동
# ls -l : 홈디렉토리안에 있는 파일 리스트 출력
# find /home/ -nouser : 홈디렉토리안에서 계정이 없는 파일 검색
# find /home/ -nogroup :
홈디렉토리안에서 그룹이 없는 파일 검색
예제 6) -name , -exec [명령어] {} \;
# touch file1 file2 file3 : file1 , file2 , file3 파일들을 생성
# ls -l : 생성된 파일 확인
# find . -name file1 : 현재 경로에서 file1이라는 파일 검색
# find /root -name file2 : /root 경로에서 file2라는 파일 검색
# find /root -name file3 -exec ls -al {} \; : /root경로에서 file3를 찾으면서 ls -al 명령어 적용
# find /root -name file3 -exec ls -an {} \; : /root경로에서 file3를 찾으면서 ls -an 명령어 적용
# find / -name rdate : / 디렉토리 하위에 있는 모든 파일을 검색하여 rdate파일을 찾는다.
# find / -name rdate -exec ls -al {} \; : / 디렉토리 하위에 있는 모든 파일을 검색하여 rdate파일을 찾는다. ( 명령어 ls -al 적용해서 찾는다. )
# find / -name rdate -ok ls -al {} \; : / 디렉토리 하위에 있는 모든 파일을 검색하여 rdate파일을 찾는다. ( 명령어 ls -al 적용해서 찾는데 찾기 전에 맞는지 물어본다. 맞으면 'y' 틀리면 'n' )
# ls -l : 현재 경로에 있는 파일 리스트 확인
# find . -name a* : a로 시작하는 파일일 찾기 ( 한글자로만 찾을때는 실패)
# find . -name ag* : ag로 시작하는 파일 차지 (두글자 이상부터는 성공)
# touch aaa bbb ccc ddd eee fff : 파일들 생성
# touch aga bgb cgb : 파일들 생성
# touch did eie fif : 파일들 생성
# ls -l : 현재경로 파일 리스트 생성
# find . -name '[a,b][g,i]*' : 첫 글자가 a,b로 시작 하며 두 번째 글자가 g, i로 시작하는 모든 파일 검색
# ls -l : 현재 경로에 있는 파일 리스트 확인
# find . -name '[a-b]??' -print : 첫 글자가 a ~ b로 시작하며 3개의 문자로 구성된 파일 검색
예제 7) -newer
# touch file1 : file1 생성
# touch file2 : file2 생성
# touch file3 : file3 생성
# touch file4 : file4 생성
# touch file5 : file5 생성
# touch file6 : file6 생성
# touch file7 : file7 생성
# ls -l : 생성성 파일들 확인
# find . -newer file4 : 현재경로에서 서브 경로까지 file4보다 최근에 생성된 파일들 검색
# ls -l : 현재 위치 파일 리스트 출력
# find . -newer file2 -a ! -newer file5 : file2보다 먼저 생성 되었고 file5 전에 생성된 파일 찾기
( -a = and , ! = negation 를 뜻한다.)
에제 8) -anewer
# ls -l : 현재 위치 파일 리스트 출력
# find . -anewer file3 : 현재 경로롭터 시작해서 서브경로까지 file3 보다 최근에 접근한 파일 찾기
# find . -anewer file2 -a ! -anewer file5 : file2 보다 최근에 file5보다 전에 접근한 파일 찾기
( -a = and , ! = negation 를 뜻한다.)
# ls -al : 현재 경로에 있는 파일 리스트 출력
# find . -anewer file4 : 현재 경로에서부터 서브경로까지 file4보다 최근에 접근한 파일 출력
# find . -anewer file4 -exec ls -l {} \; : action을 삽입 시켜 더 자세히 볼려고 하였다.(문제 생김)
(문제점 : 내가 원했던 부분은 보라색 부분이었다. 그런데 초록색 부분까지 출력이 된다.)
(해결 방법 : 아래 그림에서 확인)
# 원인 : 아래 그림을 보면은 현재 경로인 " . " 과 새로 생성된 파일들의 시간들이 똑같이 변경 되는 것을 볼 수 있다. 그래서 현재 경로부터 서브경로까지의 파일들중 " . " 디렉토리도 포함 되는 걸 알 수있다. 이로 인해서 같이 출력 되는 것이다.
# 해결 방법 : 디렉토리 파일을 제외한 일반 파일만 출력 할 수있게 제한을 준다.
# find . -anewer file4 -type f -exec ls -l {} \;
예제 9) -cnewer
# find . -cnewer file4 : 현재 경로에서 서브경로까지 file4보다 최근에 생성된 파일 출력
# find . -cnewer file4 -type f -exec ls -l {} \; : file4보다 최근에 생성된 파일 상세히 출력
(일반 파일 한에서만...)
# find . -cnewer file2 ! -cnewer file6 -type f -exec ls -l {} \; : file2 보다 먼저 생성되고 file6보다 전에 생선된 파일 출력
( ! = negation )
예제 10) -perm
# -perm 옵션을 테스트할 환경 설정
# find . -perm 700 : 퍼미션 권한이 700인 파일 출력
# find . -perm 755 : 퍼미션 권한이 755인 파일 출력
# find . -perm 777 : 퍼미션 권한이 777인 파일 출력
# find . -perm 655 : 퍼미션 권한이 656인 파일 출력
'리눅스 (Linux)' 카테고리의 다른 글
리눅스 방화벽 특정 포트 추가 방법 (0) | 2015.12.24 |
---|---|
[리눅스] Telnet 접속 방법 (0) | 2015.12.24 |
openssh를 centos6.x에 설치하기 (0) | 2015.12.24 |
리눅스 비트 확인 방법 (0) | 2015.12.24 |
e2fsck 리눅스 파일시스템 점검 및 복구 (0) | 2015.12.24 |