본문으로 이동
메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.

리눅스에서 특정 파일 및 폴더를 찾기 위한 명령어

find [경로] [옵션] [대상]
  • name [파일명] : 지정된 이름의 파일을 찾는다.
  • user [유저명] : user 소유의 파일을 찾는다.
  • -type [bcdfls] : 지정된 형식의 파일을 찾는다.
    • b : 블록파일
    • c : 문자
    • d : 디렉터리
    • f : 파일
    • l : 링크파일
    • s : 소켓
  • -size [+/-]숫자[bckw] : 지정된 크기의 파일을 찾는다.
    • +n : n보다 크다
    • -n : n보다 작다
    • n : n이다
    • b : 512-byte
    • c : byte
    • k : kilobytes
    • w : 2-byte
  • -mtime [+/-]숫자
    • +n : n일 전에 수정된 파일을 찾는다.
    • -n : n일 동안 수정된 파일을 찾는다.
  • -ctime [+/-]숫자
    • 생성 시간을 기준으로 찾는다. 사용법 mtime과 동일
  • -atime [+/-]숫자
    • 엑세스 시간을 기준으로 찾는다. 사용법 mtime과 동일
  • -inum number : 지정한 아이노드 번호와 파일을 찾는다.
  • -nouser : 소유자(UID)가 /etc/passwd 에 없는 파일을 찾는다. 계정을 지운 뒤 남은 파일이다.
  • -nogroup : 소유 그룹(GID)이 /etc/group 에 없는 파일을 찾는다.
  • -xdev : 시작한 경로가 속한 파일 시스템 안에서만 찾고 다른 파일 시스템(마운트된 장치)으로 내려가지 않는다.
  • -perm 모드 : 지정한 권한을 가진 파일을 찾는다.
  • -ls : 찾은 파일을 ls -dils 형식으로 자세히 출력한다. 조건이 아니라 출력 동작이다.
  • -print : 표준출력으로 검색된 파일명을 출력한다.
  • -exec command { } \; : 찾은 각 파일에 대해 지정된 명령을 실행한다.
  • -ok command { } \; : 실행 여부를 사용자에게 확인한 후 명령을 실행한다.
  • 최근 10일동안 변경된 파일을 찾아서 /tmp/find.out 에 저장한다.
$ find / -mtime -10 -print > /tmp/find.out
  • 특수권한 파일 찾기
    • 전체 디렉터리에서 정규 파일 중 Set-UID가 설정된 파일을 찾는다.
$ find / -type f -perm -4000 
  • -perm 4000 으로 하면 Set-UID만 설정된 파일을 검색하고
  • -perm -4000 으로 하면 Set-UID가 포함된 파일을 검색한다.
  • Set-GID는 2000, Sticky-bit는 1000 이다.
  • 리눅스 특수권한 참고
  • 소유자나 소유 그룹이 없는 파일 찾기
    • 계정이 삭제되어 주인이 없는 파일은 나중에 같은 UID 로 만든 계정이 소유하게 되므로 보안 점검 대상이다.
$ find / -nouser -print
$ find / -nogroup -print
$ find / \( -nouser -o -nogroup \) -xdev -exec ls -al {} \; 2>/dev/null
  • 2>/dev/null 은 권한 없는 디렉터리에서 나는 오류 메시지를 버린다.
  • find / -ls 처럼 조건 없이 -ls 만 주면 모든 파일을 출력할 뿐 소유자 없는 파일을 골라내지 못한다.
  • 파일 내용에 문자열이 포함된 파일 찾기
    • 하위 폴더도 한번에 검색한다.
$ find [검색 대상 폴더] -type f -print | xargs grep "[검색 문자열]"
  • 리눅스 ls로도 동일한 기능을 구현할 수 있다.