리눅스를 사용하면 특정 파일이나 디렉토리를 찾을 일들이 종종 생깁니다. 이 때 사용할 명령어가 바로 find 명령어입니다.
find는 이름 그대로 찾는 것인데, 파일이름이 다 기억이 나지 않아도 일부를 통해서 원하는 파일을 찾을 수 있어서 제가 자주 쓰는 명령어 중에 하나입니다.
find 명령어
find 명령어는 특정 파일이나 디렉토리를 찾을 때 사용하는 명령어입니다. find 명령어는 아래 문법을 이용해서 사용합니다.
find [검색할 경로] [검색 조건] [찾을 파일 또는 디렉토리 형식]
예를 들면 현재 경로에서 test.txt 파일을 찾으려고 합니다. 이 때 명령어는 아래와 같이 사용할 수 있습니다.
find ./ -name test.txt
-name은 옵션 값인데 이 부분은 곧 설명드리겠습니다.
find 명령어 옵션
find 명령어의 옵션은 여러가지가 있습니다. 어떤 것이 있는지 알아볼까요?
| optoin | description |
| -name | 이름이 일치하는 파일 찾기 |
| -iname | 대소문자 구분 없이 파일 찾기 |
| -type | 타입별 검색(f: 파일, d: 디렉토리 등) |
| -size | 파일 크기 조건 검색( ex. +10M, -1G) |
| -mtime | 수정한 지 N일 지난 파일(ex. -mtime +7) |
| -atime | 마지막 접근 시간 기준 검색 |
| -user | 소유자가 특정 사용자일 때 |
| -perm | 파일 권한 조건 검색 |
| -exec | 찾은 파일에 명령 실행 |
해당 옵션들을 활용하면 원하는 파일 또는 디렉토리를 쉽게 찾을 수 있습니다.
-name 옵션을 통해 특정 파일 찾기
-name 옵션을 사용하면 특정 파일을 찾을 수 있습니다. 아래 예시는 현재 경로에서 txt 확장자를 가지는 파일들을 모두 찾는 명령어입니다. 명령어에서 볼 수 있듯이 정규표현식을 사용해서 자유롭게 파일 또는 디렉토리의 형식을 표현할 수 있습니다.
find ./ -name "*.txt"
-iname 옵션을 통해 대소문자 구분 없이 파일 찾기
-iname 옵션을 사용하면 대소문자를 구분하지 않기 때문에 특정 단어나 확장자가 포함된 파일 또는 디렉토리를 찾을 때 유용합니다. 예를 들면 txt 확장자를 가진 파일을 어떤 사람이 TXT로 작성했다면 찾을 때 유용한 옵션이 -iname 옵션입니다. 예시로 들었지만 txt 확장자를 TXT로 사용하는 사람은 없지 않을까 싶습니다.
그럼 위 예시를 그대로 사용해서 ./test 경로에서 txt 또는 TXT 확장자를 가진 파일을 찾아보도록 하겠습니다. 2가지로 표현할 수 있는데 하나는 소문자 txt이고, 다른 하나는 대문자 TXT입니다. 대문자나 소문자 중 편하신 방법으로 찾으시면 됩니다. 왜냐하면 -iname 옵션은 대소문자를 구분 없이 찾아주기 때문입니다.
find ./test -iname "*.txt"
find ./test -iname "*.TXT"
-type 옵션을 통해 특정 타입 찾기
-type 옵션은 사용하면 특정 타입만 찾을 수 있습니다. 저는 _test 접미사를 사용해서 디렉토리를 자주 만듭니다. 그렇기 떄문에 예시로는 홈 경로에서 _test로 끝나는 디렉토리를 찾아보는 예시를 들어보도록 하겠습니다.
find ~/ -type d -name "*_test"
-size 옵션을 통해 특정 사이즈 찾기
-size 옵션을 통해서 특정 사이즈보다 크거나 특정 사이즈보다 작은 파일 또는 디렉토리를 찾을 수 있습니다. 예를 들면 disk 공간이 부족해서 특정 크기 이상의 파일을 삭제한다고 해봅시다. 그럴 경우에 어떤 파일 또는 디렉토리가 있는지 -size 옵션을 통해서 확인해 볼 수 있습니다. 예시로는 100M 초과의 파일을 찾아보도록 합시다.이전 예시에서 말씀드린 -type 옵션을 사용해서 이번에는 파일인 f를 사용해서 파일만을 찾고, 그 중에서 100M 초과 파일만 찾습니다.
find ~/ -type f -size +100M
-mtime 옵션을 통해 특정 기간 이상 수정되지 않은 파일 찾기
가끔은 너무 오랫동안 사용하지 않은 잊혀진 파일들이 있습니다. 이러한 파일들을 찾을 때에 유용한 옵션이 -mtime 옵션입니다. 예를 들어서 ./python_test 경로에서 30일보다 오래 사용하지 않은 파일을 찾는 코드를 보도록 하겠습니다.
find ./python_test -type f -mtime +30
-exec 옵션을 통해 특정 파일 삭제하기
바로 위에서 예를 든 파일들을 삭제한다고 해봅시다. 그럴 경우에 이렇게 작성하시면 됩니다.
find ./python_test -type f -mtime +30 -exec rm -f {} \;
조금 설명을 들이면 find ./python_test -type f -mtime +30은 위에서 설명드린 내용 그대로 ./python_test에서 30일보다 오래 동안 수정하지 않은 파일들을 찾습니다. 그리고 실행을 하는데 rm -f로 강제 삭제를 합니다. {}는 find로 찾은 파일들을 의미합니다. 그리고 명령이 끝났다는 의미로 \;를 입력합니다.
찾기의 모든 것, find 명령어
파일 또는 디렉토리를 찾는 데에는 find 명령어만 명령어가 없습니다. 실제로 사용해보시면 유용하게 사용하실 것으로 보입니다. 다양하게 test를 해보시면서 익숙해지시면 칼퇴에 조금이라도 도움이 되지 않을까 싶습니다!
'개발 > Linux' 카테고리의 다른 글
| tar.gz 압축하고 풀고 이제 그만 검색하자 (1) | 2025.07.13 |
|---|---|
| grep 어디까지 써봤니? grep 이제 너도 쓸 수 있어 (0) | 2025.07.09 |
| [Linux] mv 명령어 (0) | 2024.09.11 |
| [Linux] touch 명령어 (0) | 2024.09.08 |
| [Linux] rmdir 명령어 (0) | 2024.09.07 |