본문 바로가기
Old Posts/Linux

[Linux] find 명령어 사용법

by A6K 2022. 3. 22.

find 명령어는 리눅스에서 파일이나 디렉토리를 검색할 때 사용하는 명령어다. 리눅스 파일 시스템에 있는 다양한 형태의 파일과 디렉토리들을 검색할 수 있도록 find 명령어는 굉장히 많은 옵션과 기능을 제공한다.

파일 시스템의 트리 구조를 탐색하면서 원하는 종류의 파일들을 탐색할 수 있으며, 그 결과를 명령어 파이프라인을 이용해서 다른 명령어의 인자로 넣어 다양한 종류의 작업을 할 수 있다. 예를 들어 생성된지 30일이 지난 파일을 삭제하는 명령을 find 명령어를 통해 실행할 수 있다.

find 명령어 사용법

find 명령어는 옵션과 찾을 경로, expression으로 구성된다.

find [options] [path] [expression]

option과 expression은 선택적으로 사용할 수 있다.

옵션

find 명령의 옵션은 다음과 같다.

옵션 설명
-P 심볼릭 링크를 따라가지 않고, 심볼릭 링크 파일 자체 정보를 사용
-L 심볼릭 링크를 따라가서 그 파일의 정보를 사용
-H 심볼릭 링크를 따라가지 않지만 Command Line Argument를 처리할 때에는 예외
-D 디버그 메시지 출력

Expression

Expression 설명
-name 인자로 받은 문자열 패턴에 해당하는 파일 검색
-iname -name과 같지만 대소문자를 구별하지 않음
-user 인자로 받은 유저의 파일이나 디렉토리 검색
-group 인자로 받은 그룹이 소유한 파일이나 디렉토리 검색
-empty 빈 디렉토리나 크기가 0인 파일 검색
-delete 검색된 파일이나 디렉토리를 삭제
-exec 검색된 파일에 대해서 지정된 명령을 실행
-path 지정된 문자열 패턴에 해당하는 경로에서 검색
-print 검색 결과를 출력 (기본값)
-size 특정 파일 크기 조건을 기준으로 파일 검색
-type 인자로 받은 타입의 파일을 검색
d : 디렉토리
f : 일반파일
l : 링크 파일
b : 블록 디바이스
c : 캐릭터 디바이스
p : 파이프
s : 소켓
-atime 파일의 access 시간 기준으로 파일 검색
-ctime 파일의 change 시간을 기준으로 파일 검색
-mtime 파일의 modify 시간을 기준으로 파일 검색
-perm 지정된 퍼미션에 해당하는 파일 검색
-inum n inode 번호가 n인 파일 검색
-cnewer orig_file orig_file보다 최근에 변경된 파일 검색
-gid n gid가 n인 파일 검색
-mindepth 검색을 시작할 하위 디렉토리의 최소 깊이
-maxdepth 검색할 하위 디렉토리의 최대 깊이

Expression들은 AND, OR, NOT 등의 연산으로 조합해서 사용할 수 있다. 또 한, 괄호를 이용해 우선순위를 지정할 수도 있다.

예를 들어 "exp1 -a exp2" 혹은 "exp1 -and exp2"는 두 조건 모두 만족하는 경우를 찾고, "exp1 -o exp2" 혹은 "exp1 -or exp2"는 둘 중 하나라도 만족하면 검색 대상이 된다. !exp 혹은 -not exp는 exp에 해당하지 않는 대상을 검색한다.

사용예

"/var/log/myapp" 디렉토리와 "/tmp/log" 디렉토리에서 ".log" 확장자를 갖는 파일 검색

$ find /var/log/myapp /tmp/log . -name "*.log"

현재 디렉토리에서 txt 확장자가 아닌 다른 확장자를 갖는 파일 검색

$ find . -not -name "*.txt"
$ find . ! -name "*.txt"

현재 디렉토리에서 str로 시작하는 파일 검색

$ find . -name "str*" -type f
$ find . -name "str*" -a -type f

현재 디렉토리에서 "hello"라는 문자열이 들어있는 .txt 확장자 파일 검색

$ find . -name "*.txt" -a -type f -exec grep "hello" /dev/null {} \\;

현재 디렉토리에서 .bak 파일을 찾아서 삭제

$ find . -name "*.bak" | xargs rm

크기가 100k 이상인 파일 상세 정보 출력

$ find . -size +100k | xargs ls -l

생성된지 일주일이 지난 파일 검색

$ find . -type f -ctime +7

10일이상 사용되지 않은 파일 검색

$ find . -type f -atime +10

특정 퍼미션을 가지고 있는 파일 검색

$ find . -type f -perm 0664

특정 유저에 속한 파일 검색

$ find . -user user1

빈 파일 검색

$ find . -empty

관련글

 

리눅스 명령어 사용법들

리눅스 명령어 사용법 ifconfig 네트워크 인터페이스 설정관련 ls 디렉토리 엔트리 정보 출력

hbase.tistory.com

 

댓글