반응형
find는 리눅스 파일 시스템에서 파일을 검색하는 데 사용되는 명령어이다.
많이 쓰이는 명령어 중의 하나이므로 숙지해두면 유용하다.
기본문법
find [옵션] [경로] [표현식]
옵션
옵션 | 설명 |
-H | 심볼릭 링크를 따라가지 않으나, Command Line Argument를 처리할 땐 예외. |
-P | 심볼릭 링크를 따라가지 않고, 심볼릭 링크 자체 정보 사용. |
-L | 심볼릭 링크에 연결된 파일 정보 사용. |
-D | 디버그 메시지 출력. [옵션] [설명] help 디버깅 옵션을 설명. exec -exec, -execdir, -ok, -okdir 관련 진단 정보를 표시. opt 최적화와 관련된 진단 정보 표시. rates 각 속성의 성공한 빈도를 나타냅니다. tree 표현식 트리를 표시. search 디렉토리 트리를 자세히 탐색. stat stat(2), lstat(2)에 대한 추적을 호출한다. |
표현식
표현식 | 설명 |
-name | 지정된 문자열 패턴에 해당하는 파일 검색. (가장 많이 쓰이는 옵션) |
-iname | 대소문자 구별 안하고 이름으로만 찾을 때 (insensitive의 약자) |
-user | 지정한 사용자의 파일이나 디렉터리를 찾는다 (위에가 이름가지고 찾았다면 이거는 사용자 기준) |
-group | 지정한 그룹 소유의 파일이나 디렉터리를 찾는다 |
-uid | 지정한 UID소유의 파일이나 디렉터리를 찾는다 (아이디번호로 찾기) |
-gid | 지정한 UID 소유의 파일이나 디렉터리를 찾는다 (그룹번호로 찾기) |
-perm | 지정한 허가권 값을 갖는 파일이나 디렉터리를 찾는다 (permission의 약자) ex) -perm 755 : 퍼미션 값이 755로 설정된 파일이나 디렉터리 |
-empty | 빈 디렉토리 또는 크기가 0인 파일 검색. |
-delete | 검색된 파일 또는 디렉토리 삭제. |
-exec | find로 파일을 찾고 바로 연계하여 어떠한 명령을 내릴 수 있는 옵션. 결과값은 {} 기호로 표시하고 \;로 끝내야 함. |
-ls | 'ls -l'과 같은 역할 |
-path | 지정된 문자열 패턴에 해당하는 경로에서 검색. |
검색 결과를 출력. 검색 항목은 newline으로 구분. (기본 값) | |
-print0 | 검색 결과를 출력. 검색 항목은 null로 구분. |
-size n | 파일 크기를 사용하여 파일 검색. +n은 n블록보다 큰 파일을 찾으며 (greater) -n은 n블록보다 작은 파일을 찾는다 (less) 보통 nc라는 형태로 많이 사용되는데 n은 문자 길이의 파일을 의미하고, c는 character를 의미하여 1문자는 1바이트이므로 보통 바이트 단위로 인식해서 사용한다. |
-type | 지정된 파일 타입에 해당하는 파일 검색. - d: 디렉터리 - f: 일반 파일 - l: 링크 파일 - b: 블록 디바이스 - c: 캐릭터 디바이스 - p:파이프 디바이스 - s:소켓 파일 (주로 -type f 옵션이나 -type d 옵션을 많이 쓴다) |
-mindepth n | 검색을 시작할 하위 디렉토리 최소 깊이 지정. |
-maxdepth n | 검색할 하위 디렉토리의 최대 깊이 지정. |
-prune | 찾은 결과 중 디렉터리가 해당될 때 그 디렉터리 이름만 출력 (하위 디렉터리에 해당되는게 있어도 들어가서 찾지 않는다) |
-newer | 옵션 뒤에 적힌 파일보다 최근에 변경된 파일을 찾는다 ex) find -newer 'abc.c'abc 파일보다 최근에 변경된 파일을 찾음 |
-cnewer | 앞의 newer가 내용 변경이라면 cnewer라면 파일 상태 |
2>/dev/null | 맨 뒤에 이 옵션을 붙이면 퍼미션 접근 불가한것은 화면에 출력하지 않는다. |
-atime n | 파일 접근(access) 시각을 기준으로 파일 검색. n : n일 이전에 접근한 파일 찾기 (exactly) +n : n보다 오래된 녀석들 기준 (greater) -n : n일부터 지금까지 즉 n일 내에 접근했던 파일들을 불러준다. (less) |
-ctime n | 파일 내용 및 속성 변경(change) 시각을 기준으로 파일 검색. |
-mtime n | 파일의 데이터 수정(modify) 시각을 기준으로 파일 검색. |
-mmin n | mmin은 분이 기준 (mtime은 기준이 day) |
표현식 연산자
표현식 연산 | 설명 |
(expression) | expression 우선순위 지정. |
!expression -not expression |
expression 결과에 NOT 연산. |
expression -a expressionexpression -and expressionexpression expression |
expression 간 AND 연산. |
expression -o expressionexpression -or expression |
expression 간 OR 연산. |
사용 예시
예시1. 파일명으로 찾기 (-name)
# 현재 디렉토리에서 test가 포함되는 파일 찾기
find . -name "*test*"
# 현재 디렉토리에서 .txt 확장자 모두 찾기
find . -name "*.txt"
# 현재 디렉토리에서 .txt 확장자 파일 검색 후 모두 삭제
find . -name "*.txt" -delete
# 현재 디렉토리에서 test로 시작되는 파일 찾기
find . -name "test*"
# 현재 디렉토리에서 test로 끝나는 파일 찾기
find . -name "*test"
예시2. 타입으로 찾기 (-type)
# 현재 디렉토리에서 모든 디렉토리 찾기
find . -type d
# 현재 디렉토리에서 test가 들어가는 디렉토리 찾기
find . -name "*test*" -type d
# 현재 디렉토리에서 모든 파일 찾기
find . -type f
# d : 디렉토리
# f : 일반적인 파일
# l : 심볼릭 링크
예시3. 파일 크기로 찾기 (-empty, -size)
# 현재 디렉토리에서 빈 디렉토리이거나 크기가 0인 파일 검색
find . -empty
# 현재 디렉토리에서 test가 들어가는 빈 디렉토리이거나 크기가 0인 파일 검색하여 삭제
find . -name "*test*" -empty -delete
# 현재 디렉토리에서 1024byte인 파일 검색
find . -size 1024c
# 현재 디렉토리에서 1024byte보다 큰 파일 검색
find . -size +1024c
# 현재 디렉토리에서 1024byte보다 작은 파일 검색
find . -size -1024c
# 현재 디렉토리에서 1kb보다 크고 10kb보다 작은 파일 검색
find . -size +1k -size -10k
# b : 블록단위
# c : byte
# k : kbyte
# w : 2byte 워드
예시4. 검색된 파일에서 추가 명령 실행하기 (-exec)
# 현재 디렉토리에 "test"가 들어가는 파일을 찾아서 상세정보 출력
find . -name "*test*" -exec ls -l {} \;
# 현재 디렉토리에 있는 파일에서 "test"가 들어가는 내용 찾기
find . -type f -exec grep "test" {} \;
# 현재 디렉토리에 ".txt" 확장자를 찾아서 모두 삭제
find . -name "*.txt" -exec rm {} \;
[참고]
https://inpa.tistory.com/entry/LINUX-📚-find-명령어-정복하기-파일-검색 [Inpa Dev 👨💻:티스토리]
https://coding-factory.tistory.com/804
반응형
'Develops > Linux' 카테고리의 다른 글
[LINUX] mkdir 명령어(디렉토리 생성, 체크) (0) | 2024.03.30 |
---|---|
[LINUX] chmod 명령어 (접근권한 부여 / 읽기, 쓰기, 실행) (0) | 2024.03.30 |
[LINUX] chown 명령어 (소유자, 소유자그룹 변경) (0) | 2024.03.30 |
[LINUX] crontab 명령어 (리눅스 크론탭 스케줄러) (0) | 2024.03.30 |
[LINUX] 자주 사용하는 Linux 명령어 (0) | 2024.03.03 |