Linxu 파일 찾기

10740 단어 linux파일 찾기find
Liux 를 사용 할 때 파일 찾기 가 자주 필요 합 니 다.그 중에서 찾 는 명령 은 주로 find 와 grep 가 있 습 니 다.두 명령 은 구역 이 있다.(1) find 명령 은 파일 이름, 파일 크기, 소유자, 소속 그룹, 비어 있 는 지, 접근 시간, 수정 시간 등 파일 의 속성 에 따라 찾 습 니 다.(2) grep 는 파일 의 내용 에 따라 찾 습 니 다. 파일 의 줄 마다 주어진 패턴 (patter) 에 따라 일치 하 게 찾 습 니 다.(이전 정규 표현 식 은 grep 명령 을 소개 하 는 것 입 니 다)
파일 속성 검색 도 구 는 두 가지 가 있 습 니 다. 1. locate: 비 실시 간 검색 (데이터베이스 기반 검색) 2. find: 실시 간 검색.
1. locate: 비 실시 간 검색 (데이터베이스 검색)
    : 
•     
•     
•      
•          ,       
•                   
       :/var/lib/mlocate/mlocate.db
         :updatadb
                 ,      ,          ,     

locate KEYWORD
     
    -i          
    -n  N     N     
    -r         

예제: 검색 이름 이나 경로 에 'conf' 가 있 는 파일 locate conf 는 Regex 를 사용 하여 'conf' 로 끝 나 는 파일 locate - r 'conf $' 를 검색 합 니 다.
2, find: 실시 간 검색
        : 
    •        
    •      
    •     
    •                   
  :
    find [OPTION]... [    ] [    ] [    ] 
        :        ;        
        :       ,     、  、  、        ;               
        :           ,       

검색 조건:
      
    -maxdepth  level         ,      1 
    -mindepth  level         
                ,             
  :    /etc    5         
    Find /etc –maxdepth 5  –mindepth 5

파일 이름과 inode 에 따라 찾기:
-name "    ":    glob(     )
    find /etc/ -name "*pas?wd*"
    *, ?, [], [^]
-iname "    ":        
    find /etc/ -iname *pas?wd*   
-inum n   inode   
    find -inum 69  //  inode  69   
-samefile name    inode    
    find -samefile a123     //     
-links n       n   
    find -links 2  //      2   
-regex "PATTERN": PATTERN(     )           ,         
find /etc/ -regextype posix-egrep -regex  ".*/pa[sa]{2}wd"  //       

주, 그룹 에 따라 찾기:
    -user  USERNAME: //         (UID)   
 :find –user lin  //      lin   
    -group  GRPNAME: //        (GID)   
    -uid  UserID: //        UID    
 :find –user 1003  //  UID 1003   
    -gid  GroupID: //        GID    
    -nouser: //         
         :find –nuuser //              
    -nogroup: //         

파일 형식 으로 찾기:
    -type TYPE:      //TYPE  
    find /dev/ -type  l  //  dev     
    -type   f:     
    -type   d:     
    -type   l:       
    -type   s:     
    -type   b:      
    -type   c:       
    -type   p:     

조합 조건 찾기
    : 
  :-a(and)   :-o(or)   :-not, !
 ·    : 
    (  A)   (  B) =  (A   B) 
    (  A)   (  B) =  (A   B) 
  : 、
    !A -a !B = !(A -o B) 
    !A -o !B = !(A -a B)

예시: find - name snow. png / • snow. png 라 는 파일 find - name snow. png / / • 대소 문자 구분 없 이 snow. png, Snow. png, SNOW. PNG 등의 파일 find / name "txt" / / 검색 루트 디 렉 터 리 아래. txt 로 끝 나 는 파일 find / var – name "log"/ / 검색 / var 디 렉 터 리 에 있 는 파일 이름 에 log 가 있 는 파일 find - user joe - group joe / / 사용자 joe 및 그룹 joe 가 가지 고 있 는 파일 find - user joe - not - group joe / / 검색 소속 자 는 joe 이지 만 소속 그룹 은 joe 가 아 닌 파일 find - user joe - o - user jane / / 검색 소속 자 는 joe 또는 jane 의 파일 입 니 다.find - not (- user joe - o - user jane) / 검색 은 joe 에 속 하지 않 고 jane 에 속 하지 않 는 파일 입 니 다.find / user joe - o - uid 500 / 검색 루트 디 렉 터 리 소속 자 는 joe 또는 소속 그룹 이 500 인 파일 입 니 다.예제: 1. / tmp 디 렉 터 리 에서 주 는 루트 가 아니 고 파일 이름 은 f 로 시작 하지 않 는 파일 find / tmp (- not - user root - a - not - name 'f') – lsfind / tmp - not (- user root - o - name 'f *') – ls 에서 파일 을 찾 아 표시 하 는 방법 은 우리 의 목적 입 니 다. 우 리 는 찾 은 파일 의 상세 한 정보 와 속성 을 더 알 고 싶 습 니 다.만약 우리 가 현재 파일 을 찾는다 면, LS 명령 을 사용 하여 파일 정 보 를 보 는 것 은 상당히 번 거 로 운 것 입 니 다. 지금 우 리 는 이 두 명령 을 결합 해서 사용 할 수 있 습 니 다 [root@centos6 bin]# find -user root -ls137744 4 drwxr-xr-x 2 root root 4096 Jan 26 20:05 .137793 4 -rwxrwxrwx 1 root root 135 Jan 26 10:40 ./per.sh
디 렉 터 리 제거
  :
1、  /etc/ , /etc/sane.d       .conf              :
find /etc -path ‘/etc/sane.d’ -a -prune -o -name “*.conf”
2、  /etc/ , /etc/sane.d /etc/fonts         .conf     
find /etc \(–path ‘/etc/sane.d’ –o –path ’/etc/fonts’ \) -a prune –o name “*.conf”

파일 크기 로 찾기
size [+|-] #UNIT
    :k, M, G,c(byte)
UNIT: (#-1, #]
 :6k   (5k,6k]
UNIT:[0,#-1]
 :-6k   [0,5k]
+#UNIT:(#,∞)
 :+6k   (6k,∞)

시간 스탬프 에 따라 찾기:
     “ ”   ;
        -atime [+|-]#,  
        #: [#,#+1)
        +#: [#+1,∞]
        -#: [0,#)
            -mtime
            -ctime
     “  ”   :
            -amin
            -mmin
            -cmin

예제: find / etc / - mtime - 1 / / etc 디 렉 터 리 다음 분 이내 의 동작 find / - amin - 10 \ # 시스템 에서 마지막 10 분 동안 방문 한 파일 find / - atime - 2 \ # 시스템 에서 마지막 48 시간 동안 방문 한 파일 find / empty \ # 시스템 에서 비어 있 는 파일 이나 폴 더 find / - group cat \ # 시스템 에서 groupcat 에 속 하 는 파일 find / - mmin - 5 \ # 찾기시스템 에서 마지막 5 분 동안 수 정 된 파일 찾기 find / - mtime - 1 \ # 시스템 에서 마지막 24 시간 동안 수 정 된 파일 찾기 find / - nuser \ # 시스템 에서 폐기 사용자 에 속 하 는 파일 찾기 find / - user fred \ # 시스템 에서 FRED 라 는 사용자 에 속 하 는 파일 찾기
아래 목록 은 find 명령 이 지정 한 파일 의 특징 을 찾 을 수 있 는 일부 조건 입 니 다.모든 검색 조건 을 열거 하지 않 았 습 니 다. 리 눅 스 관련 책 을 참고 하면 모든 find 명령 의 검색 함 수 를 알 수 있 습 니 다.
-amin n
시스템 의 마지막 N 분 접근 파일 찾기
-atime n
시스템 의 마지막 n * 24 시간 접근 파일 찾기
-mmin n
시스템 의 마지막 N 점 수 정 된 파일 찾기
-mtime n
시스템 의 마지막 n * 24 시간 수 정 된 파일 찾기
-cmin n
시스템 의 마지막 N 분 상태 가 바 뀐 파일 찾기
-ctime n
시스템 의 마지막 n * 24 시간 상태 가 바 뀐 파일 찾기
-empty
시스템 에 빈 파일 이나 빈 파일 디 렉 터 리 나 디 렉 터 리 에 하위 디 렉 터 리 가 없 는 폴 더 를 찾 습 니 다.
-false
시스템 에서 항상 잘못된 파일 찾기
-fstype type
시스템 에 지정 한 파일 시스템 에 존재 하 는 파일 을 찾 습 니 다. 예 를 들 어 ext 2.
-gid n
시스템 에서 파일 찾기
-group gname
시스템 에 있 는 파일 이 gnam 파일 그룹 에 속 하고 그룹 과 ID 를 지정 하 는 파일 을 찾 습 니 다.
            Find         :

Find 명령 도 사용자 에 게 검색 동작 을 제어 할 수 있 는 특유 의 옵션 을 제공 합 니 다.다음 표 는 우리 가 정리 한 가장 기본 적 이 고 자주 사용 하 는 find 명령 의 제어 옵션 과 용법 입 니 다.
옵션
용도 설명
-depth
깊이 있 는 검색 프로 세 스 방식 을 사용 하여 특정한 층 에서 지정 한 디 렉 터 리 에서 파일 내용 을 우선 찾 습 니 다.
-follow
마스크 링크 방식 으로 찾기;또한, 마스크 링크 방식 조회 도 무시 할 수 있 습 니 다.
-help
명령 요약 보이 기
-maxdepth levels
어떤 차원 의 디 렉 터 리 에서 체감 방법 에 따라 찾기
-mount
파일 시스템 디 렉 터 리 에서 찾 을 수 없습니다. 용법 은 - xdev 와 유사 합 니 다.
-noleaf
비 UNUX 파일 시스템, MS - DOS 시스템, CD - ROM 파일 시스템 에서 최적화 찾기 금지
-version
인쇄 버 전 숫자
아래 표 는 파일 을 찾 고 파일 정 보 를 표시 하 는 데 자주 사용 되 는 매개 변수 와 사용 방법 입 니 다.
옵션
용도 설명
  -exec command;
명령 찾기 및 실행
  -fprint file
전체 파일 이름 인쇄
  -fprint0 file
빈 파일 을 포함 하여 전체 파일 이름 을 인쇄 합 니 다.
  -fprintf file format
파일 형식 인쇄
  -ok command;
사용자 에 게 명령 을 실행 하고 사용자 의 Y 확인 입력 에 따라 실행 합 니 다.
  -printf format
파일 형식 인쇄
  -ls
같은 파일 형식의 파일 을 인쇄 합 니 다.
권한 에 따라 찾기:
     -perm [/|-]MODE
         MODE:       
        /MODE:    (u,g,o)               ,   ,+  centos7    ,centos6       / +   。
    -MODE:                ,   
    0      
    find?-perm?755           755   
               ,find?-perm?+222                  , 5,6,7 ,         
                ,find?-perm?-222                 ,  5,6,7 ,         
          (other)     ,find?-perm?-002    

     
    -print:       ,     
    -ls:            “ls -l”  
    -delete:        
    find -size +6k -delete
    -fls file:                      
    -ok -exec   ok   ,exec    
    find -name "*.tmp" -ok rm -f {} \;
    find -type f -name "*.sh" -exec chmod a+x {} \;
    find -name "*.conf" -exec cp -i {} {}.bak \;

-ok COMMAND {} \;             COMMAND     ,             ,            
-exec COMMAND {} \;              COMMAND      
{}:                
find                 ,                        

파라미터 교체 xargs
**            |     ,           ,     xargs   **
xargs           ,xargs      stdin    ,            stdin         arguments 
   :                       
             ,         ,xargs      
  : ls f* |xargs rm 
find /sbin -perm +700 |ls -l                
find /sbin -perm +7000 | xargs ls –l 
** find xargs  :find | xargs COMMAND **

find 예제 find - name ". conf" - exec cp {}. orig \;설정 파일 을 백업 하고. orig 라 는 확장 자 를 추가 합 니 다 find / tmp - ctime + 3 - user joe - ok rm {} \;존재 시간 이 3 일 이상 인 joe 의 임시 파일 find 를 삭제 합 니 다 ~ - perm - 002 - exec chmod o - w {} \;홈 디 렉 터 리 에서 다른 사용자 가 쓸 파일 find / data – type f - perm 644 - name ". sh" – exec chmod 755 {} \ 를 찾 습 니 다.find /home –type d -ls
실례:
1. 찾기 / var 디 렉 터 리 산하 주 는 루트 이 고 그룹 은 mail 의 모든 파일 입 니 다.
[root@centos6 spool]# find /var -user root -and -group mail -ls394408 4 drwxrwxr-x 2 root mail 4096 Jan 27 09:06 /var/spool/mail396328 4 -rw------- 1 root mail 3263 Jan 26 09:29 /var/spool/mail/root
2. 루트, lp, gdm 에 속 하지 않 는 모든 파일 찾기 / var 디 렉 터 리
[root@centos6 /]# find /var -not -user root -not -user lp -not -user gdm -ls394492 4 drwxr-xr-x 2 abrt abrt 4096 Mar 23 2017 /var/spool/abrt396391 0 -rw-rw---- 1 linkang mail 0 Jan 26 09:43 /var/spool/mail/linkang396380 0 -rw-rw---- 1 nologin mail 0 Jan 20 20:09 /var/spool/mail/nologin396379 0 -rw-rw---- 1 sh mail 0 Jan 20 13:53 /var/spool/mail/sh396355 0 -rw-rw---- 1 wei mail 0 Jan 17 08:28 /var/spool/mail/wei396338 0 -rw-rw---- 1 500 mail 0 Jan 13 17:07 /var/spool/mail/liubei
3. 찾기 / var 디 렉 터 리 에서 최근 일주일 동안 내용 이 수정 되 었 으 며, 주 는 루트 가 아니 며, potfix 파일 도 아 닙 니 다.
[root@centos6 /]# find /var -mtime -7 -not ( -user root -o -user postfix )/var/spool/mail/linkang/var/spool/mail/qwer/var/spool/mail/linakng/var/spool/mail/yio/var/spool/mail/werty/var/spool/mail/asdf
4. 현재 시스템 에 주 또는 그룹 이 없 으 며 최근 일주일 동안 방문 한 파일 을 찾 습 니 다.
[root@centos6 ~]# find / -type f -nouser -nogroup -atime -7/home/lin/.bash_history/home/lin/789/home/lin/456
5. / etc 디 렉 터 리 에서 1M 이상 이 고 일반 파일 형식 인 모든 파일 찾기
[root@centos6 ~]# find /etc -type f -size +1M /etc/gconf/gconf.xml.defaults/%gconf-tree.xml/etc/selinux/targeted/modules/active/policy.kern/etc/selinux/targeted/policy/policy.24
6. / etc 디 렉 터 리 에서 모든 사용자 가 쓰기 권한 이 없 는 파일 을 찾 는 방법 1: find / etc / - not (- perm - 002 - o - perm - 020 - o - perm - 200) | xargs ls - l 방법 2: [root@centos6 ~]# find /etc -not -perm +222 -ls -exec ls -l {} \;1190012 4 -r--r--r-- 1 root root 80 Feb 22 2016 /etc/lvm/profile/thin-performance.profile1190009 4 -r--r--r-- 1 root root 2391 Mar 23 2017 /etc/lvm/profile/command_profile_template.profile
7. 찾기 / etc 디 렉 터 리 에 실행 권한 이 없 는 파일 find / etc / not (- perm - 001 - a - perm - 010 - a - perm - 100) | xargs ls - l
8. / etc / init. d 디 렉 터 리 에서 모든 사용자 가 실행 권한 이 있 고 다른 사용자 가 쓰기 권한 이 있 는 파일 을 찾 습 니 다.
find /etc/init.d/ -perm -113 |xargs ls -lfind /etc/init.d/ -perm -113 -exec ls -l {} \;find /etc/init.d/ -perm -113 -ls

좋은 웹페이지 즐겨찾기