Computer >> 컴퓨터 >  >> 시스템 >> Linux

리눅스 find 명령어로 파일 찾기: 조건별 검색 방법 총정리

리눅스 find 명령어로 파일 찾기: 조건별 검색 방법 총정리

리눅스 find 명령어는 리눅스 시스템에서 가장 중요하고 강력한 도구 중 하나입니다. 이름 그대로, 사용자가 지정하는 거의 모든 조건에 따라 시스템 내 파일을 검색할 수 있습니다. 파일 권한, 소유 사용자, 그룹, 파일 형식, 날짜, 크기 등 다양한 기준으로 파일을 찾을 수 있으며, 시스템 관리에 없어서는 안 될 필수 명령어입니다.

find 명령어는 대부분의 리눅스 배포판에 기본적으로 포함되어 있으므로 별도로 설치할 필요가 없습니다.

1. 현재 디렉토리에서 파일 이름으로 찾기

파일을 검색하는 가장 일반적인 방법은 이름으로 찾는 것입니다. 현재 디렉토리에서 이름으로 파일을 찾으려면 다음 명령을 실행합니다.

find . -name photo.png
리눅스 find 명령어로 파일 찾기: 조건별 검색 방법 총정리

대소문자를 구분하지 않고 파일을 찾고 싶다면 -iname 옵션을 사용합니다.

find . -iname photo.png
리눅스 find 명령어로 파일 찾기: 조건별 검색 방법 총정리

루트 디렉토리 전체에서 파일을 찾으려면 검색 명령 앞에 sudo를 붙여 필요한 권한을 확보하고, 루트 디렉토리를 의미하는 / 기호를 지정합니다. 마지막으로 -print 표현식은 검색 결과의 경로를 화면에 출력해 줍니다. 예를 들어 Gzip을 찾으려면 다음과 같이 입력합니다.

sudo find / -name gzip -print
리눅스 find 명령어로 파일 찾기: 조건별 검색 방법 총정리

2. 특정 디렉토리 아래에서 파일 찾기

"/home"처럼 특정 디렉토리 아래의 파일을 찾으려면 다음 명령을 사용합니다.

find /home -name filename.txt
리눅스 find 명령어로 파일 찾기: 조건별 검색 방법 총정리

"/home" 디렉토리 아래에서 확장자가 ".txt"인 파일을 모두 찾으려면 다음과 같이 와일드카드(*)를 활용합니다.

find /home -name "*.txt"
리눅스 find 명령어로 파일 찾기: 조건별 검색 방법 총정리

"/home"과 "/opt"처럼 여러 디렉토리에서 이름이 "test.txt"인 파일을 동시에 찾을 수도 있습니다.

find /home /opt -name test.txt

"/home" 디렉토리에서 숨김 파일(숨김 폴더)을 찾으려면 다음 명령을 실행합니다.

find /home -name ".*"

이름이 "test.txt"인 단일 파일을 찾아 바로 삭제하려면 다음과 같이 -exec 옵션을 사용합니다.

find /home -type f -name test.txt -exec rm -f {} \;

"/opt" 디렉토리 아래의 빈 파일을 모두 찾으려면 다음 명령을 사용합니다.

find /opt -type f -empty

3. 이름으로 디렉토리 찾기

"/home" 디렉토리 아래에서 이름이 "testdir"인 모든 디렉토리를 찾으려면 -type d 옵션을 사용합니다.

find /home -type d -name testdir

"/home" 아래의 빈 디렉토리를 모두 찾으려면 다음 명령을 실행합니다.

find /home -type d -empty

4. 특정 권한을 가진 파일 찾기

find 명령어는 perm 옵션을 통해 특정 권한을 가진 파일을 검색할 수 있습니다.

"/home" 디렉토리에서 권한이 "777"인 모든 파일을 찾으려면 다음 명령을 실행합니다.

find /home -type f -perm 0777 -print

반대로 권한이 "777"이 아닌 모든 파일을 찾으려면 느낌표(!)를 사용합니다.

find . -type f ! -perm 777

읽기 전용 파일만 찾으려면 다음과 같이 입력합니다.

find /home -perm /u=r

실행 가능한 파일을 모두 찾으려면 다음 명령을 사용합니다.

find /home -perm /a=x

스티키 비트(sticky bit)가 설정된 권한 "1553"의 파일을 찾으려면 다음과 같이 합니다.

find /home -perm 1553

SUID 비트가 설정된 파일을 모두 찾으려면 다음 명령을 실행합니다.

find /home -perm /u=s

권한이 "777"인 파일을 찾아 한 번에 "700"으로 변경하려면 -exec chmod를 함께 사용합니다.

find /home -type f -perm 0777 -print -exec chmod 700 {} \;

5. 날짜 및 시간 기준으로 파일과 디렉토리 찾기

"/opt" 디렉토리 아래에서 20일 전에 수정된 모든 파일을 찾으려면 -mtime 옵션을 사용합니다.

find /opt -mtime 20

20일 전에 접근(읽기)된 모든 파일을 찾으려면 -atime 옵션을 사용합니다.

find /opt -atime 20

수정된 지 30일 이상 50일 이내인 파일을 찾으려면 조건을 조합합니다.

find /opt -mtime +30 -mtime -50

최근 2시간 안에 변경된 모든 파일을 찾으려면 분 단위 옵션인 -cmin을 사용합니다.

find /opt -cmin -120

6. 크기 기준으로 파일과 디렉토리 찾기

"/home" 디렉토리 아래에서 10MB 크기의 파일을 모두 찾으려면 -size 옵션을 사용합니다.

find /home -size 10M

10MB보다 크고 50MB보다 작은 파일을 찾으려면 조건을 나란히 지정합니다.

find /home -size +10M -size -50M

"/home" 디렉토리 아래에서 10MB를 초과하는 ".mp4" 파일을 찾아 한 번의 명령으로 삭제하려면 다음과 같이 실행합니다.

find /home -type f -name *.mp4 -size +10M -exec rm {} \;

이처럼 find 명령어는 시스템 관리, 디렉토리 탐색, 불필요한 파일 정리 등 리눅스의 가상 디렉터리 트리를 효율적으로 관리하는 데 매우 유용한 도구입니다. 보안 파일 전송을 위한 scp 명령어 사용법, 터미널에서 nnn을 파일 관리자로 활용하는 방법, 깨진 패키지 해결 방법 등 다른 리눅스 관련 글도 함께 확인해 보시기 바랍니다.