리눅스 명령어 find 사용법 및 8가지 옵션

리눅스(Linux)에서 파일이나 디렉터리를 찾는 일은 매우 중요합니다. 리눅스 명령어 find는 특히 많은 파일들 속에서 특정 파일을 찾아야 할 때 사용하는 효율적인 검색 도구입니다. 리눅스 명령어 find는 지정한 경로 내에서 파일이나 디렉터리를 검색할 수 있는 강력한 도구로, 다양한 옵션을 통해 더욱 정교한 검색이 가능합니다.

이 포스팅에서는 find 명령어의 기본적인 사용법부터 다양한 옵션들을 설명하고, 실제로 활용할 수 있는 팁들을 제공하겠습니다. 리눅스 시스템을 사용하는 데 있어 필수적인 find 명령어를 마스터해 보세요.

리눅스 명령어 find란?

find는 리눅스에서 파일이나 디렉터리를 검색할 때 사용하는 명령어입니다. 이 명령어는 지정한 경로 내에서 파일 이름, 크기, 수정 시간 등 다양한 조건을 기준으로 파일을 찾을 수 있습니다.

find 명령어는 다음과 같이 사용합니다.

find [options...] [path...] [expression]
ShellScript

이 기본 형식에서 경로는 검색을 수행할 디렉터리, 검색 조건은 파일을 찾기 위한 필터, 그리고 실행할 작업은 찾은 파일에 대해 수행할 추가 작업을 의미합니다.

find 명령어의 기본 사용법

find 명령어의 기본적인 사용법을 살펴보겠습니다. 가장 간단한 형태는 특정 경로에서 모든 파일을 찾는 것입니다.

find ~/linux/tree
ShellScript

위의 명령어는 ~/linux/tree 디렉터리 내의 모든 파일과 디렉터리를 아래 그림과 같이 출력합니다. 이 경우 find 명령어는 디렉터리와 하위 디렉터리를 재귀적으로 탐색합니다.

그림 1. 리눅스 명령어 find: 실행 결과
그림 1. 리눅스 명령어 find: 실행 결과

주요 옵션 및 사용 예시

find 명령어는 다양한 옵션을 통해 검색 조건을 세밀하게 조정할 수 있습니다. 다음은 자주 사용되는 옵션들입니다.

이름으로 검색하기(-name)

파일 이름으로 검색할 때는 -name 옵션을 사용합니다. 예를 들어, 홈 디렉터리 하위에 linux/tree 경로 아래에서 이름이 “app.py”인 파일을 찾고 싶다면 다음과 같이 사용합니다:

find ~/linux/tree -name "app.py"
ShellScript

검색한 결과는 아래 그림과 같습니다. 여기서 중요한 점은 -name 옵션은 대소문자를 구분한다는 것입니다.

그림 2. 리눅스 명령어 find: -name 옵션으로 파일이름으로 검색
그림 2. 리눅스 명령어 find: -name 옵션으로 파일이름으로 검색

만약 대소문자를 구분하지 않고 검색하려면 다음과 같이 -iname 옵션을 사용할 수 있습니다.

find ~/linux/tree -iname "app.py"
ShellScript

대소문자를 구분하지 않게끔 하니 App.py 파일과 app.py 파일이 모두 검색되었습니다.

그림 3. 리눅스 명령어 find: -iname 옵션으로 대소문자 구분없이 파일이름으로 검색
그림 3. 리눅스 명령어 find: -iname 옵션으로 대소문자 구분없이 파일이름으로 검색

와일드 카드를 사용해서 특정 문자열이 들어간 파일 검색할 수도 있습니다.

find ~/linux/tree -name "*.py"
ShellScript

다음은 확장자가 py인 파일을 모두 찾은 결과입니다.

그림 4. 리눅스 명령어 find: 와일드 카드 사용하여 파일 탐색
그림 4. 리눅스 명령어 find: 와일드 카드 사용하여 파일 탐색

만약 현재 디렉터리 기준으로 문자열 “test”가 들어간 모든 파일을 찾고 싶다면 다음과 같이 와일드 카드를 찾고자 하는 문자열 양 옆으로 작성해 주시면 됩니다.

find . -name "*test*"
ShellScript

특정 타입의 파일만 검색하기(-type)

find 명령어는 파일의 타입을 지정하여 검색할 수 있습니다. 파일의 종류에 따라 -type 옵션을 사용합니다:

  • f: 일반 파일
  • d: 디렉터리
  • l: 심볼릭 링크 (링크 파일)
  • c: 문자 장치 파일
  • b: 블록 장치 파일

예를 들어, 디렉터리만 검색하려면 다음과 같이 사용합니다:

find ~/linux/tree -type d
ShellScript

아래 그림과 같이 다른 것들은 제외하고 디렉터리만 나타난 것을 확인할 수 있습니다.

그림 5. 리눅스 명령어 find: 디렉터리만 탐색한 결과
그림 5. 리눅스 명령어 find: 디렉터리만 탐색한 결과

파일 크기로 검색하기(-size)

파일의 크기를 기준으로 검색할 때는 -size 옵션을 사용합니다. 크기를 나타내는 단위는 다음과 같은데, c와 k는 소문자이며, M과 G는 대문자를 사용해야 합니다.

  • c: 바이트
  • k: 킬로바이트
  • M: 메가바이트
  • G: 기가바이트

예를 들어, 50바이트보다 작은 파일을 찾으려면 다음과 같이 입력합니다:

find ~/linux/tree -size -50c
ShellScript

+는 주어진 크기보다 큰 파일을, -는 주어진 크기보다 작은 파일을 의미합니다. 따라서 +1M으로 입력하면 1MB보다 큰 파일을 찾습니다.

그림 6. 리눅스 명령어 find: 용량이 50바이트 미만인 파일만 검색
그림 6. 리눅스 명령어 find: 용량이 50바이트 미만인 파일만 검색

수정 시간으로 검색하기(-mtime)

파일이 마지막으로 수정된 시간을 기준으로 검색할 때는 -mtime 옵션을 사용합니다. 예를 들어, 최근 7일 이내에 수정된 파일을 찾고 싶다면 다음과 같이 사용합니다:

find ~/linux/tree -mtime -3
ShellScript

여기서 -3은 3일 이내에 수정된 파일을 의미하며, +3은 3일 이전에 수정된 파일을 의미합니다.

그림 7. 리눅스 명령어 find: 수정된 지 3일 이내의 파일만 검색
그림 7. 리눅스 명령어 find: 수정된 지 3일 이내의 파일만 검색

특정 사용자나 그룹의 파일 검색하기(-user, -group)

특정 사용자나 그룹의 파일을 검색할 때는 -user-group 옵션을 사용합니다. 예를 들어, 사용자 “www-data”인 파일을 찾으려면 다음과 같이 입력합니다:

find ~/linux/tree -user www-data
ShellScript

아래 그림은 파일 소유자가 www-data인 파일만 검색된 결과입니다.

그림 8. 리눅스 명령어 find: 특정 소유자의 파일만 검색
그림 8. 리눅스 명령어 find: 특정 소유자의 파일만 검색

검색 결과에 대한 추가 작업

find 명령어의 강력한 기능 중 하나는 검색 결과에 대해 추가 작업을 수행할 수 있다는 것입니다. 가장 많이 사용되는 옵션은 -exec입니다. 이 옵션을 사용하면 찾은 파일에 대해 특정 명령어를 실행할 수 있습니다.

예를 들어, 찾은 모든 “.log” 파일을 삭제하고 싶다면 다음과 같이 사용합니다:

find /home/user -name "*.log" -exec rm {} \;
ShellScript

여기서 {}find가 찾은 각 파일의 이름을 의미하며, \;는 명령어의 끝을 나타냅니다. 이 명령어는 모든 .log 파일을 찾아서 삭제합니다.

주의사항

find 명령어는 매우 강력하지만, 잘못 사용하면 시스템의 중요한 파일을 실수로 삭제하거나 변경할 수 있습니다. 특히 -exec 옵션을 사용할 때는 매우 주의해야 합니다. 항상 명령어를 실행하기 전에 결과를 확인하고, 필요한 경우 -exec 옵션 대신에 -ok 옵션을 사용하여 각 작업에 대해 확인을 받을 수 있습니다.

find /home/user -name "*.log" -ok rm {} \;
ShellScript

이렇게 하면 각 파일을 삭제하기 전에 확인 메시지가 표시되므로 실수를 줄일 수 있습니다.

정리

리눅스에서 find 명령어는 파일이나 디렉터리를 효율적으로 검색할 수 있는 강력한 도구입니다. 다양한 옵션을 활용하면 원하는 조건에 맞는 파일을 쉽게 찾을 수 있으며, -exec 옵션을 통해 자동화된 작업을 수행할 수도 있습니다. 하지만 그만큼 주의해서 사용해야 하며, 특히 중요한 작업을 실행하기 전에 항상 결과를 확인하는 습관을 가지는 것이 중요합니다.

이제 find 명령어를 잘 활용하여 리눅스 시스템에서 파일을 빠르고 정확하게 찾아보세요. 필요에 따라 다양한 옵션을 조합해가며, 본인만의 find 활용법을 만들어 가는 것도 좋은 방법입니다.

참고자료

관련 포스트

Leave a Comment