설명
리눅스 파일 시스템에서 파일 검색
사용법
find [옵션] [경로] [표현식]
# 현재 위치에서 log가 들어가는 파일 모두 찾기
find . -name "*log*"
Bash
복사
옵션
•
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 : 해당 파일보다 최근에 수정된 파일을 찾음.
예시
파일명으로 찾기 (-name)
# 현재 디렉토리에서 test가 포함되는 파일 찾기
find . -name "*test*"
# 현재 디렉토리에서 .txt 확장자 모두 찾기
find . -name "*.txt"
# 현재 디렉토리에서 .txt 확장자 파일 검색 후 모두 삭제
find . -name "*.txt" -delete
# 현재 디렉토리에서 test로 시작되는 파일 찾기
find . -name "test*"
# 현재 디렉토리에서 test로 끝나는 파일 찾기
find . -name "*test"
Bash
복사
* = 와일드 카드
타입으로 찾기 (-type)
# 현재 디렉토리에서 모든 디렉토리 찾기
find . -type d
# 현재 디렉토리에서 test가 들어가는 디렉토리 찾기
find . -name "*test*" -type d
# 현재 디렉토리에서 모든 파일 찾기
find . -type f
Bash
복사
•
타입 종류
◦
d : 디렉토리
◦
f : 일반적인 파일
◦
l : 심볼릭 링크
파일 크기로 찾기 (-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
Bash
복사
•
size 단위
◦
b : 블록단위
◦
c : byte
◦
k : kbyte
◦
w : 2byte 워드
검색된 파일에서 추가 명령 실행하기 (-exec)
# 현재 디렉토리에 "test"가 들어가는 파일을 찾아서 상세정보 출력
find . -name "*test*" -exec ls -l {} \;
# 현재 디렉토리에 있는 파일에서 "test"가 들어가는 내용 찾기
find . -type f -exec grep "test" {} \;
# 현재 디렉토리에 ".txt" 확장자를 찾아서 모두 삭제
find . -name "*.txt" -exec rm {} \;
Bash
복사