[개념]
find 명령어는 파일 또는 디렉토리를 검색하는 명령어 이다.
이 명령어는 단순히 파일을 찾는 역할만을 하는 것이 아니라, 찾은 파일에 대해서 특정 작업까지 할 수 있다.
예)
(1) 찾은 파일을 모두 삭제 할 수 있다.
(2) 찾은 파일을 퍼미션(chmod) 변경 또는 소유자(chown)를 변경할 수 있다.
이런 작업을 find 명령어 내에서 모두 한번에 적용할 수 있다.
파일을 찾을 때에도 다양한 방법으로 찾을 수 있도록 많은 옵션과 방법들이 있다.
특정 파일 하나만을 찾을 수 있고, 특정 문자 패턴에 맞는 파일을 검색하거나, 확장자를 검색하거나,
특정 소유자의 파일을 찾거나, 소유자가 없는 파일을 찾거나, 특정 파일사이즈 이상 되는 파일을 찾거나,
지정된 퍼미션을 가진 파일을 찾거나 등 매우 다양하게 사용자의 응용된 방법으로 확인할 수 있다.
[기본 사용법]
find [OPTION] ... [Path] ... [Expression]
예) 파일 찾기
find /usr -name *.jsp
[자주 사용되는 옵션]
옵션 | 기능 |
-name 패턴 | 파일명에 기초하여 쉘 패턴에 맞는 파일을 찾는다. 기본적으로 파일명을 지정한다. 와일드카드 사용이 가능하다. |
-uid UID | 지정된 UID를 갖는 파일을 찾는다. |
-gid GID | 지정된 GID를 갖는 파일을 찾는다. |
-group 그룹명 | 지정된 그룹명을 가진 파일을 찾는다. |
-user 소유자 | 지정된 파일을 소유하고 있는 소유자의 모든 파일을 찾는다. |
-perm 모드 | 지정된 퍼미션을 가진 파일을 찾는다. |
-newer 파일 | 지정된 파일 이후에 생성된 파일을 찾는다. |
-used n | 상태가 변경된 후로 최종 접근된 지 n일 지난 파일을 찾는다. |
-type | 파일 형식을 지정하여 지정한 형식의 파일을 찾는다. d(디렉토리) , c(입출력 특수 파일) , b(블록 파일) , l(심볼릭 링크 파일) , p(파이프 파일) , f(일반 파일) , s(소켓 파일) 등을 지원한다. |
-links | 특정 개수의 링크를 가진 파일 찾기 |
-size | 파일 크기가 일치하는 파일 찾기 |
-atime n | n일 전에 액세스한 파일 찾기. 범위를 정할 때에는 +n 또는 -n 형식으로도 사용이 가능하다. |
-mtime n | n일 전에 마지막으로 수정된 파일 찾기. 범위를 정할 때에는 +n 또는 -n형식으로도 사용이 가능하다. |
-exec | 찾은 파일들을 대상으로 뒤에 나오는 명령어를 실행하도록 한다. {}는 검색된 파일들이 하나씩 대입되는 것을 의미하며, 검색된 파일의 개수만큼 명령이 실행된다. 마지막에는 \; 를 붙인다. |
표준 출력에서 완전한 파일명을 출력하도록 한다. |
[테스트]
(1) -name 기본적인 파일명 찾기
(1-1) 하위 디렉토리에 있는 특정파일 검색하기
(1-2) 추가 (예제
- 현재 디렉토리에서 a로 시작하는 모든 파일 검색 : find . -name 'a*'
- 현재 디렉토리에서 b로 끝나는 모든 파일 검색 : find . -name '*b'
- 현재 디렉토리에서 a로 시작하고 b로 끝나는 모든 파일 검색 : find . -name 'a*b'
- 현재 디렉토리에서 .txt로 끝나는 모든 파일 검색 : find .-name '*.txt'
- 현재 디렉토리에서 jpg , jpeg 등 jp로 들어간 이미지 확장자 파일 검색 : find . -name '*.jp'
- 현재 디렉토리에서 중간에 a가 들어간 5글자 파일 검색 : find . -name '??a??'
- 현재 디렉토리에서 ab로 시작하는 3글자 파일 검색 : find . -name 'ab?'
- 현재 디렉토리에서 abc.으로 시작하고 3가지 글자로 끝나는 파일 검색 : find . -name 'abc.???'
- 특정 사용자의 홈디렉토리 내에서 특정 파일을 검색 : find ~yubi -name *.jsp -print
(2) -uid UID 지정된 UID를 갖는 파일을 찾기
특정 사용자의 UID 찾기 : id -u username
사용자와 관련된 UID와 그룹 찾기 : id username
UID root 가 갖는 파일 찾아보기...
(2-2) 추가 (예제
- root 소유의 SetUID 파일을 검색(서버 보안 점검 시 사용) : find / -user root -perm -4000 -pring
- 파일 퍼미션에 SetUID 또는 SetGID가 있는 파일을 모두 찾아 검색(-o는 or을 의미함) :
find /usr -type f \ ( -perm -4000 -o -perm -2000 \) -exec ls -l {} \;
- 소유자 또는 소유그룹이 없는 파일 검색(서버 보안 점검 시 사용) : find / -nouser -o -nogroup -print
(3) -gid GID 지정된 GID를 갖는 파일을 찾기
특정 사용자의 GID 찾기 : id -g username
사용자가 속한 모든 그룹 찾기 : id -G username
사용자와 관련된 UID와 그룹 찾기 : id username
GID hansol 가 갖는 파일 찾아보기...
(4) -group 그룹명을 가진 파일 찾기
그룹명 root 가진 파일들이 매우 많이 나타난다.
그룹명 root는 0 이다. 위와 같은 결과값을 확인할 수 있다.
(5) -user 소유자가 가진 파일 찾기
(5-1) 추가 (예제
- 특정 사용자의 ID 소유로 된 모든 파일을 찾는 예제 : find / -user yubi -print
(6) -perm 지정된 퍼미션을 가진 파일 찾기
(6-2) 추가 (예제
- 쓰기 권한이 있는 파일을 검색(서버 보안 점검 시 사용) : find / -type f \ ( -perm -2 -o -perm -20\) -exec ls-l {} \;
- 쓰기 권한이 있는 디렉토리를 검색(서버 보안 점검 시 사용) : find / -type d \ (-perm -2 -o -perm -20 \) -exec ls -ld {} \;
(7) -newer 지정된 파일 이후에 생성된 파일 찾기
File11 은 나중에 만들어진 파일이다.
즉, File1 이후에 생성된 최근 파일이 무엇인지 알 수 있다.
(8) -used n 상태가 변경된 후로 최종 접근된 지 n일 지난 파일 찾기
(9) -type 특정 파일 형식을 지정하여 파일 찾기
(10) -file 파일 크기가 일치하는 파일 찾기
(10-1) 추가 (예제
- 특정 용량 이상 되는 파일들을 모두 검색 : find / -size +30000k -exec ls-l {} \;
- 현재 디렉토리에서 1024byte보다 크기가 큰 파일 검색 : find . -size +1024c
- 현재 디렉토리에서 1024byte보다 크기가 작은 파일 검색 : find . -size -1024c
- 현재 디렉토리에서 1MB보다 크고 512MB보다 작은 파일 검색 : find . -size +1M -size -512M
- 현재 디렉토리에서 빈 디렉토리 혹은 파일 크기가 0인 파일을 검색 : find . -empty
- 현재 디렉토리에서 빈 디렉토리이거나 크기가 0인 파일 검색하여 삭제 : find . -name '*' -empty -delete
(11) exec 검색한 파일에 대해 추가 명령어 실행하기
(11-1) 추가 (예제
- 현재 디렉토리에 있는 파일 중에 파일 내용에 choyubi라는 내용이 들어가 있는 파일들 찾기 :
find . -type f -exec grep 'abcd' {} \;
- 현재 디렉토리에 있는 .apk로 끝나는 파일 모두 삭제find . -name '*.apk' -exec rm -f {} \;
- 리눅스 시스템내의 특정파일들을 검색하여 자동으로 삭제 : find ~yubi -name *.bak -exec rm -vf {} \;
- 지정한 소유자의 모든 파일을 찾아서 확인 : find / -user yubi -exec ls -l {} \;
- 특정 퍼미션 가지고 있는 모든 파일을 검색 : find / -perm 4755 -type f -exec ls -l {} \;
- 파일이 최근 상태가 변경된 후, 최종 접근된 지 n일 지난 모든 파일 검색 : find / -used 2 -exec ls -l {} \;
- 파일이 90일이 넘는 기간 동안, 수정되지 않았을 경우 파일들을 삭제 : find ~yubi -mtime +90 -exec rm -f {} \;
- 지정된 파일 이후에 생성된 파일을 검색 : find / -newer /root/fixFile -exec ls -l {} \;
- 특정 디렉토리 내에 존재하는 모든 링크파일 검색(서버 보안 점검 시 사용) : find / -type l -exec ls -l {} \;
- 특정 문자를 포함하는 파일을 찾고 해당 파일에서 그 문자가 속한 행을 확인 :
find /home/yubi -type f -exec egrep -i "doc" /dev/null {} \;
자세한 옵션은 find --help 또는 man find로 확인할 수 있다.
'Linux > CentOS7' 카테고리의 다른 글
file 파일 종류 확인 (0) | 2024.09.11 |
---|---|
du 파일 및 디렉토리 용량 확인 (0) | 2024.09.11 |
rmdir 디렉토리 삭제 (0) | 2024.09.10 |
rename 파일 및 디렉토리 이름 변경 (0) | 2024.09.10 |
mv 파일 및 디렉토리 이동, 이름 변경 (0) | 2024.09.09 |