리눅스 (Linux)2015. 12. 24. 23:56

리눅스 파일 찾기 명령어 [ 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

 설명

-print 

 찾은 파일리스트를 보여줌 

-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  :  현재 경로에서 비어있는 파일 찾기

현재경로에서 부터 하위 경로까지 비어있는 파일들을 찾는 것을 알 수있다

http://postfiles8.naver.net/20151104_23/kdi0373_1446607830349nTahj_PNG/02.png?type=w2 

 

예제 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 값을 숫자로 표시

http://postfiles10.naver.net/20151104_57/kdi0373_1446608929635A4Hh5_PNG/03.png?type=w2

# ls -an  :  현재 경로에 있는 모든 파일들을 출력 단, gid / uid 값을 숫자로 표시

# find . -gid 500  :  gid 500인 모든 것을 검색

# find . -uid 0  :  uid 0인 모든 것을 검색

현재경로에서 부터 하위 경로까지 비어있는 파일들을 찾는 것을 알 수있다

http://postfiles15.naver.net/20151104_110/kdi0373_1446609089812vU500_PNG/04.png?type=w2 

 

에제 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일 파일 검색

http://postfiles3.naver.net/20151104_34/kdi0373_14466100677507BIvE_PNG/06.png?type=w2 

 

예제 4)  -user , -group

# touch file1 file2 file3  :  root계정으로 file1, file2, file3 파일일 생성

# ls -al  :  현재경로에 있는 모든 파일 확인

# find . -user root  :  user명이 root인 파일 검색

# find . -group root  :  그룹명이 root인 파일 검색

http://postfiles9.naver.net/20151104_152/kdi0373_14466105159423wWqn_PNG/07.png?type=w2 

 

예제 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 ]을 사용하면 된다

http://postfiles10.naver.net/20151104_153/kdi0373_1446612188086yRisa_PNG/08.png?type=w2
# cd /home/  :  
홈디렉토리로 이동

# ls -l  :  홈디렉토리안에 있는 파일 리스트 출력

# find /home/ -nouser  :  홈디렉토리안에서 계정이 없는 파일 검색

# find /home/ -nogroup  :  홈디렉토리안에서 그룹이 없는 파일 검색
http://postfiles3.naver.net/20151104_162/kdi0373_1446612188471Reyqz_PNG/09.png?type=w2 

 

 

 

예제 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 명령어 적용  

http://postfiles9.naver.net/20151104_72/kdi0373_1446613661633Jt3lu_PNG/10.png?type=w2# find / -name rdate  :  / 디렉토리 하위에 있는 모든 파일을 검색하여 rdate파일을 찾는다.

# find / -name rdate -exec ls -al {} \;  :  / 디렉토리 하위에 있는 모든 파일을 검색하여 rdate파일을 찾는다. ( 명령어 ls -al 적용해서 찾는다. )

# find / -name rdate -ok ls -al {} \;  :  / 디렉토리 하위에 있는 모든 파일을 검색하여 rdate파일을 찾는다. ( 명령어 ls -al 적용해서 찾는데 찾기 전에 맞는지 물어본다. 맞으면 'y' 틀리면 'n' )

http://postfiles3.naver.net/20151104_258/kdi0373_1446614269760k9e23_PNG/11.png?type=w2

# ls -l  :  현재 경로에 있는 파일 리스트 확인

# find . -name a*  :  a로 시작하는 파일일 찾기 ( 한글자로만 찾을때는 실패)

# find . -name ag* :  ag로 시작하는 파일 차지 (두글자 이상부터는 성공)

http://postfiles3.naver.net/20151104_290/kdi0373_1446615698990y2Fn3_PNG/14.png?type=w2 

# 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로 시작하는 모든 파일 검색

http://postfiles5.naver.net/20151104_196/kdi0373_1446615818386pNLVF_PNG/13.png?type=w2

# ls -l  :  현재 경로에 있는 파일 리스트 확인

# find . -name '[a-b]??' -print  :  첫 글자가 a ~ b로 시작하며 3개의 문자로 구성된 파일 검색

http://postfiles8.naver.net/20151104_87/kdi0373_1446616349039u5KtT_PNG/17.png?type=w2 

예제 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보다 최근에 생성된 파일들 검색

http://postfiles11.naver.net/20151104_266/kdi0373_14466443018807jtX7_PNG/18.png?type=w2 

# ls -l  :  현재 위치 파일 리스트 출력

# find . -newer file2 -a ! -newer file5  :  file2보다 먼저 생성 되었고 file5 전에 생성된 파일 찾기

  ( -a = and  ,  ! = negation 를 뜻한다.)

http://postfiles9.naver.net/20151104_200/kdi0373_1446645009291dnEbq_PNG/19.png?type=w2 

 

 

 

에제 8)  -anewer

# ls -l  :  현재 위치 파일 리스트 출력

# find . -anewer file3  :  현재 경로롭터 시작해서 서브경로까지 file3 보다 최근에 접근한 파일 찾기

# find . -anewer file2 -a ! -anewer file5  :  file2 보다 최근에 file5보다 전에 접근한 파일 찾기

 ( -a = and  ,  ! = negation 를 뜻한다.)

http://postfiles2.naver.net/20151105_177/kdi0373_1446688078736ueefq_PNG/20.png?type=w2

# ls -al  :  현재 경로에 있는 파일 리스트 출력

# find . -anewer file4  :  현재 경로에서부터 서브경로까지 file4보다 최근에 접근한 파일 출력

# find . -anewer file4 -exec ls -l {} \;   :   action을 삽입 시켜 더 자세히 볼려고 하였다.(문제 생김)

(문제점 : 내가 원했던 부분은 보라색 부분이었다. 그런데 초록색 부분까지 출력이 된다.)

(해결 방법아래 그림에서 확인)

http://postfiles12.naver.net/20151106_11/kdi0373_1446790432225zb7Gm_PNG/03.png?type=w2

# 원인 : 아래 그림을 보면은 현재 경로인 " . " 과 새로 생성된 파일들의 시간들이 똑같이 변경 되는 것을 볼 수 있다.  그래서 현재 경로부터 서브경로까지의 파일들중 " . " 디렉토리도 포함 되는 걸 알 수있다. 이로 인해서 같이 출력 되는 것이다

http://postfiles4.naver.net/20151106_275/kdi0373_1446790630434w4dxu_PNG/01.png?type=w2

# 해결 방법 : 디렉토리 파일을 제외한 일반 파일만 출력 할 수있게 제한을 준다.

# find . -anewer file4 -type f -exec ls -l {} \;  

http://postfiles12.naver.net/20151106_139/kdi0373_1446792844541V7dzf_PNG/04.png?type=w2 

 

 

 

 

예제 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 ) 

http://postfiles5.naver.net/20151106_212/kdi0373_1446793848561fDELz_PNG/05.png?type=w2 

 

 

 

 

 

예제 10)  -perm

# -perm 옵션을 테스트할 환경 설정

http://postfiles13.naver.net/20151106_156/kdi0373_1446795903727VlfUJ_PNG/07.png?type=w2 

# find . -perm 700  :  퍼미션 권한이 700인 파일 출력

# find . -perm 755  :  퍼미션 권한이 755인 파일 출력

# find . -perm 777  :  퍼미션 권한이 777인 파일 출력

# find . -perm 655  :  퍼미션 권한이 656인 파일 출력

http://postfiles13.naver.net/20151106_204/kdi0373_1446796189142aMDnK_PNG/08.png?type=w2 

 


Posted by 랩퍼우