본문 바로가기

OS/Linux

Linux - 찾기 명령어 (find)

728x90

파일 찾기 (파일명 검색)

 
find [옵션] [경로] [표현식]
옵션
  • P : 심볼릭 링크를 따라가지 않고, 심볼릭 링크 자체 정보 사용.
  • L : 심볼릭 링크에 연결된 파일 정보 사용.
  • H : 심볼릭 링크를 따라가지 않으나, Command Line Argument를 처리할 땐 예외.
  • D : 디버그 메시지 출력.
경로

상대 경로, 절대 경로 모두 가능하며 대부분의 리눅스의 경우 이 경로 인자 값을 생략한다면 현재 위치(.)를 입력받은 것으로 간주하지만 유닉스의 경우 이 경로를 입력받지 않으면 명령어 실행이 안되니 유의하셔야 합니다. 


표현식

    • name : 해당 이름의 파일을 찾음. 해당 이름에는 정규 표현식을 활용할 수 있음
    • type : 지정된 파일 타입에 해당하는 파일 검색
    • user : 해당 유저에게 속한 파일 검색
    • empty : 빈 디렉토리 혹은 크기가 0인 파일 검색
    • delete : 검색된 파일 혹은 디렉토리 삭제
    • exec : 검색된 파일에 대해 지정된 명령 실행
    • path : 지정된 문자열 패턴에 해당하는 경로에서 검색.
    • print : 검색 결과를 출력. 검색 항목은 newline으로 구분. (기본 값)
    • print0 : 검색 결과를 출력. 검색 항목은 null로 구분.
    • size : 파일 크기를 사용하여 파일 검색.
    • mindepth : 검색을 시작할 하위 디렉토리 최소 깊이 지정.
    • maxdepth : 검색할 하위 디렉토리의 최대 깊이 지정.
    • atime : n일 이내에 액세스된 파일을 찾음.
    • ctime : n일 이내에 만들어진 파일을 찾음.
    • mtime : n일 이내에 수정된 파일을 찾음.
    • cnewer file : 해당 파일보다 최근에 수정된 파일을 찾음.

 

반응형

 

 

find 명령어는 다른 명령어와는 달리 옵션은 거의 사용되지 않고 이 표현식을 통해 찾을 타깃을 정합니다. 이 표현식은 중첩을 통해 대상 범위를 더 줄일 수도 있습니다.

현재 디렉토리에서, txt 확장자를 가진 모든 파일 찾기
# find -name '*.txt'  // (현재 디렉토리 밑의 하위 디렉토리까지 다 찾습니다.)
 
루트에서부터, 즉 전체 하드에서, txt 확장자를 가진 모든 파일 찾기
# find / -name '*.txt'
 
전체 하드 디스크에서, 파일명이 .bash 로 시작하는 모든 파일 찾기 + ls 명령 형식으로 출력
# find / -name '.bash*' -ls    // (뒤에 -ls 라는 옵션을 붙이면 됩니다.)
 
 
 

타입으로 찾기 (-type)

전체 하드 디스크에서, 디렉토리 이름이 samso 로 시작하는 모든 디렉토리 찾기
# find / -name 'samso*' -type d    // # find / -name 'samso*'  으로 찾으면 타입을 지정하지 않아 전부 나옴
  • d : 디렉토리
  • f : 파일
  • l : 심볼릭 링크

파일 크기로 찾기 (-size)

전체 하드 디스크에서, 사이즈가 1024byte보다 큰 파일 검색
# find / -size +1024c

 

전체 하드 디스크에서, 사이즈가 5kb보다 크고 100kb보다 작은 파일 검색
# find / -size +5k -size -100k
 

검색된 파일에서 추가 명령 실행하기 (-exec)

전체 하드 디스크에서, 'samso' 가 들어가는 파일을 찾아서 상세정보 출력 
# find / -name '*samso*' -exec ls -l {} \;
 
전체 하드 디스크에서, 'test'가 들어가는 내용 찾기
# find / -type f -exec grep "test" {} \;
 
현재 디렉토리에 'txt' 확장자를 찾아서 모두 삭제
# find . -name '*.txt' -exec rm {} \;

 

*** 심화 과정 (로그 정리 시 많이 사용) --> 현재 디렉토리에서 3개월 지난 파일 삭제
# find . -mtime +90 -name '*.log' -exec rm -f {} \;
# find . -mtime +90 -name '*.log' -exec ls  {} \;  // 삭제 전 ls 로 꼭 확인해 볼 것
728x90
반응형

'OS > Linux' 카테고리의 다른 글

Linux - 메모리 정보 확인 명령어(free)  (0) 2023.02.06
Linux - RPM  (0) 2023.02.03
Linux - 권한관리 (chmod, chown, chgrp)  (0) 2023.02.01
Linux - yum  (2) 2023.02.01
Linux - Crontab (크론탭)  (2) 2023.02.01