728x90
find 명령어 - 폴더, 파일 찾기
리눅스의 find 명령어는 시스템 내에서 파일을 검색하는데 사용되는 명령어이다.
생각보다 많이 사용되기 때문에 알아두는것이 좋다.
- find 사용법
find [옵션] [경로] [표현식]
# 현재 위치에서 log가 들어가는 파일 모두 찾기
$ find . -name "*log*"
* 경로는 상대경로, 정대경로 모두 가능하며, 생략하면 현재위치(.)를 디폴트값으로 간주합니다.
▷ 옵션
- 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일 이내에 수정된 파일을 찾음
- cnewerfile : 해당 파일보다 최근에 수정된 파일을 찾음
find 명령어는 다은 명령어와 달리 옵션보다는 표현식을 주로 사용해서 원하는 타깃을 찾는다.
표현식을 잘 써야만 원하는 결과를 쉽게 얻을 수 있음
만약 찾을려는 디렉토리에 권한이 없으면 아래와 같은 에러가 생기니 참고하자.
'permission denied'
이럴때는 sudo 명령어 관리자 권한으로 폴더를 검색해야함
find 명령어 예시
- 파일명으로 찾기 (-name)
# 현재 디렉토리에서 test가 포함되는 파일 찾기
find . -name "*test*"
# 현재 디렉토리에서 .txt 확장자 모두 찾기
find . -name "*txt"
# 현재 디렉토리에서 .txt 확장자 파일 검색 후 모두 삭제
find . -name "*txt" -delete
- 타입으로 찾기 (-type)
# 현재 디렉토리에서 모든 디렉토리 찾기
find . -type d
# 현재 디렉토리에서 test가 들어가는 모든 디렉토리 찾기
find . -name "*test*" -type d
# 현재 디렉토리에서 모든 파일 찾기
find . -type f
* d : 디렉토리 f : 일반적인 파일 l : 심볼릭 링크
- 파일 크기로 찾기 (-empty, -size)
# 현재 디렉토리에서 빈 디렉토리이거나 크기가 0인 파일 검색
find . -empty
# 현재 디렉토리에서 test가 들어가는 빈 디렉토리이거나 크기가 0인 파일 검색하여 삭제
find . -name "*test*" -empty -delete
# 현재 디렉토리에서 1024byte인 파일 검색
find . -size 1024c
# 현재 디렉토리에서 1024byte보다 큰 파일 검색
find . -size +1024c # 작은것을 찾으려면 (-) 사용
# 현재 디렉토리에서 1kb보다 크고 10kb보다 작은 파일 검색
find . -size +1k -size -10k
* b : 블록단위 c : byte k : kbyte w : 2byte 워드
- 검색된 파일에서 추가 명령 실행하기 (-exec)
# 현재 디렉토리에 "test"가 들어가는 파일을 찾아서 상세 정보 출력
find . -name "*test*" -exec ls -l {} \;
# 현재 디렉토리에 ".txt" 확장자를 찾아서 모두 삭제
find . -name "*.txt" -exec rm () \;
* exec를 사용해서 검색한 대상에 추가 명령어를 수행할 수 있음
728x90
'Server&Network&클라우드' 카테고리의 다른 글
[Linux] 리눅스 명령어 연습 사이트 - 설치없이 웹에서 리눅스 연습 (0) | 2024.03.11 |
---|---|
[Linux] 파일 내 특정 문자열 찾기 - grep 기본 (0) | 2024.03.08 |
[Linux] 파일 or 폴더 용량 확인 - df, du (0) | 2024.03.04 |
[AWS-S3] S3 CLI 명령어 _ 커맨드 옵션(recursive, exclude, include, dryrun) (0) | 2024.02.23 |
[AWS-S3] S3 CLI 명령어 _복사(cp, sync) (0) | 2024.02.22 |