상세 컨텐츠

본문 제목

2020.12.16 find command

보안/unix(유닉스)

by MustThanks 2020. 12. 16. 21:08

본문

반응형

find command


   find [OPTION...] [PATH] [EXPRESSION...]

      OPTION
        -P        : 심볼릭 링크를 따라가지 않고, 심볼릭 링크 자체 정보 사용.
        -L        : 심볼릭 링크에 연결된 파일 정보 사용.
        -H        : 심볼릭 링크를 따라가지 않으나, Command Line Argument를 처리할 땐 예외.
        -D        : 디버그 메시지 출력.

      EXPRESSION
        -name     : 지정된 문자열 패턴에 해당하는 파일 검색.
        -empty    : 빈 디렉토리 또는 크기가 0인 파일 검색.
        -delete   : 검색된 파일 또는 디렉토리 삭제.
        -exec     : 검색된 파일에 대해 지정된 명령 실행.
        -path     : 지정된 문자열 패턴에 해당하는 경로에서 검색.
        -print    : 검색 결과를 출력. 검색 항목은 newline으로 구분. (기본 값)
        -print0   : 검색 결과를 출력. 검색 항목은 null로 구분.
        -size     : 파일 크기를 사용하여 파일 검색.
        -type     : 지정된 파일 타입에 해당하는 파일 검색.
        -mindepth : 검색을 시작할 하위 디렉토리 최소 깊이 지정.
        -maxdepth : 검색할 하위 디렉토리의 최대 깊이 지정.
        -atime    : 파일 접근(access) 시각을 기준으로 파일 검색.
        -ctime    : 파일 내용 및 속성 변경(change) 시각을 기준으로 파일 검색.
        -mtime    : 파일의 데이터 수정(modify) 시각을 기준으로 파일 검색.




-type  표현식은 파일 종류를 지정하여 검색이 가능
   b : block special
   c : character special
   d : directory
   f : regular file
   l : symbolic link
   p : FIFO
   s : socket

  
-size 표현식은 기본적으로 block 단위(512B)의 크기를 사용
       파일 크기 값 뒤에 'c' 또는 'k'를 이용하여 
       바이트 단위 또는 킬로바이트의 크기 값을 지정
   b:block
   c:bytes 
   w:2bytes 
   k:kbytes
   M:mbytes
   G:gbytes

 

-maxdepth  표현식을 사용하면 검색할 하위 디렉토리의 깊이를 제한


  find / -name [NAME]         # 루트에서 NAME 파일을 검색.


  find . -name "STR*"         # STR로 시작되는 모든 파일을 검색


  find . -empty               # 빈 디렉토리 나 size가 0인 파일 검색.

 
  find . -name TMP -empty     # TMP 이름을 가진 디렉토리 또는 크기가 0인 파일 검색.


  find . -name [FileName] -print0 # 검색된 결과 줄 바꿈 없이 출력 

                                           # -print0 는 newLine의 기능을 제거하여 출력하라는 명령

  find . -name [FileName] -print  # 검색된 결과 줄 바꿈  출력.


  find . -name [FileName] -type f       # [FileName] 이름을 가진 일반 파일 검색.

  find . -name [DirName] -type d        # [DirName] 이름을 가진 디렉토리 검색

  find . -size +512c -size -10248c      # 파일size가 512 바이트 보다 크고 1024 바이트 보다 작은  파일을 검색

  find . -name "*.java" -exec ls -l {} \;    # 현재 디렉토리에서 java 확장자 파일의 상세 정보 출력.

  find . -name "*.java" -exec grep "main" {} \;        # .java 파일에 문자열 main이 있는지 검색.

  find . -name "*.java" -exec grep -n "import" {} \;    # .java 파일에 문자열 import가 있는 라인 표시.

  find / -name "*.c" 2> /dev/null                 # 에러 메시지를 출력하지 않음  표준 에러(2)를 "/dev/null"로 redirection
  
  find / -maxdepth 1 -name "findName"        # findName라는 파일을 루트(/)경로 에서만 

                                                            # 검색하고 하위 디렉토리는 검색하지 않음

  find . -name "*.tar " -exec cp {} /mnt/share/ \;       # ar 파일을 /mnt/share/ 에 copy

 

#해당일(실행시키는일자)서 일반파일을 찾아 삭제
find . -ctime 1 -type f -print ! -exec rm -rf {} \;


#해당일(실행시키는일자)서 일반파일을 찾아 file size가 0보다 크면 삭제
find . -ctime 1 -type f -size +0 -print ! -exec rm -rf {} \;


#해당일(실행시키는일자)서 디렉토리를 찾아 삭제
find . -ctime 1 -type d -print ! -exec rm -rf {} \;

관련글 더보기

댓글 영역