우리가 흔히 windows탐색기에서 파일을 검색하듯 리눅스에서도 사용자가 원하는 파일을 찾을 수 있다.
이때, 사용하는 명령어가 find 명령어다. 단순히 찾아줄 뿐 아니라 찾은 파일에 특정 명령을 실행할 수 있다.
옵션 |
설명 |
-name [FILE_NAME] |
파일명을 지정 ( " ? ", " * " 등의 메타문자를 파일명으로 사용할 수 있다.) |
-type |
파일 종류를 지정 f : 일반파일 d : 디렉터리 b : 블럭장치파일 c : 문자장치파일 l : 심볼릭링크파일 p : 파이프 |
-user uname |
소유자명 또는 UID를 지정 |
-group gname |
소유그룹 이름 또는 GID를 지정 |
-size [+-][NUM][단위] |
파일의 크기를 지정 |
-perm mode |
파일의 접근권한을 지정(8진수로 명시) |
-atime [+-]n |
access time (파일을 마지막으로 접근한 시간) 지정 |
-ctime [+-]n |
change time (파일의 속성이 마지막으로 변경된 시간) 지정 |
-mtime [+-]n |
modification time (파일의 내용이 마지막으로 변경된 시간) 지정 |
아래는 find 명령어의 자주 실행되는 예시들과 그에대한 설명이다.
1. 이름 검색
[root@localhost workdir]# ls
apple.c banana.c hell.c hello.c
[root@localhost workdir]# find . -name "*.c" /* 파일명이 .c로 끝나는 파일 검색 */
./banana.c
./hell.c
./hello.c
./apple.c
[root@localhost workdir]# find . -name "h*.c" /* 파일명이 h로 시작하고 .c로 끝나는 파일 검색 */
./hell.c
./hello.c
[root@localhost workdir]# find . -name "hell?.c"
./hello.c
[root@localhost workdir]# find . -name "hel?.c"
./hell.c
2. 퍼미션 검색
[root@localhost ~]# find / -perm 4000 /* 8진수 앞에 "-"가 없으면 정확히 일치하는 파일을 검색 */
[root@localhost ~]# find / -perm -4000 /* 8진수 앞에 "-"가 있으면 해당 권한을 포함하는 파일을 검색 */
/usr/bin/chage
/usr/bin/at
/usr/bin/su
/usr/bin/passwd
/usr/bin/newgrp
/usr/bin/gpasswd
/usr/bin/ksu
/usr/bin/sudo
------------ 이하 생략 -------------
[root@localhost ~]# find / \( -perm -4000 -o -perm -2000 \)
/* 검색조건이 둘 이상일 경우 -o(or) -a(and)의 논리 연산 사용 가능 /*
/usr/bin/chage
/usr/bin/at
/usr/bin/cgclassify
/usr/bin/su
/usr/bin/passwd
--------------- 생략 ----------------
/test/test1
/run/log/journal
3. 검색 파일에 대한 추가 명령 실행
[root@localhost ~]# find / -perm -4000 -exec ls -al {} \;
-rwsr-xr-x. 1 root root 64240 11월 6 2016 /usr/bin/chage
-rwsr-xr-x. 1 root root 52952 4월 11 2018 /usr/bin/at
-rwsr-xr-x. 1 root root 32184 4월 11 2018 /usr/bin/su
-rwsr-xr-x. 1 root root 27832 6월 10 2014 /usr/bin/passwd
-rwsr-xr-x. 1 root root 41776 11월 6 2016 /usr/bin/newgrp
-rwsr-xr-x. 1 root root 78216 11월 6 2016 /usr/bin/gpasswd
-rwsr-xr-x. 1 root root 61416 5월 9 22:48 /usr/bin/ksu
---s--x--x. 1 root root 143248 6월 28 03:03 /usr/bin/sudo
------------------ 이하 생략 ---------------------
/* -exec 옵션을 통해 검색 파일에 대한 추가 명령이 실행 가능하다. */
{}는 검색 결과 파일들을 뒤에 오는 명령의 인자로 전달하기 위한 기호이다.
\;는 명령어의 끝을 의미한다
4. 시간 관련 검색
[root@localhost ~]# date
2018. 10. 12. (금) 10:57:58 KST
[root@localhost ~]# find /etc -type f -mtime -3 -exec ls -l {} \;
-rw-r--r--. 1 root root 2384 10월 11 17:13 /etc/passwd
-rw-r--r--. 1 root root 1048 10월 11 17:10 /etc/group-
-rw-r--r--. 1 root root 1033 10월 11 17:13 /etc/group
-rw-r--r--. 1 root root 78 10월 12 10:01 /etc/resolv.conf
----------. 1 root root 1414 10월 11 17:13 /etc/shadow
------------------ 이하 생략 ---------------------
[root@localhost ~]# find /etc -type f -mtime 3 -exec ls -l {} \;
[root@localhost ~]# find /etc -type f -mtime +3 -exec ls -l {} \;
-rw-r--r--. 1 root root 232 4월 30 2017 /etc/my.cnf.d/mysql-clients.cnf
-rw-r--r--. 1 root root 511 4월 11 2018 /etc/inittab
-rw-r--r--. 1 root root 26832 4월 11 2018 /etc/dnsmasq.conf
------------------ 이하 생략 ---------------------
5. 크기 관련 검색
[root@localhost workdir]# find -type f -size -3M -exec ls -lh {} \; /* 3M 미만 파일 검색 */
-rw-r--r--. 1 root root 2.0M 10월 12 11:10 ./2M.txt
-rw-r--r--. 1 root root 1.0M 10월 12 11:09 ./1M.txt
[root@localhost workdir]# find -type f -size +3M -exec ls -lh {} \; /* 3M 초과 파일 검색 */
-rw-r--r--. 1 root root 5.0M 10월 12 11:10 ./5M.txt
-rw-r--r--. 1 root root 4.0M 10월 12 11:10 ./4M.txt
[root@localhost workdir]# find -type f -size 3M -exec ls -lh {} \; /* 3M 파일 검색 */
-rw-r--r--. 1 root root 3.0M 10월 12 11:10 ./3M.txt
/* -size [+-]n[단위] : +-가 없으면 정확히 n size, +n이면 n size 초과, -n이면 n size 미만 파일을 검색 */
size의 단위는 b : blocks, c : bytes, k : kilobytes, M : megabytes, G : gigabytes 가 있다.
'리눅스' 카테고리의 다른 글
[Linux] 주석 없는 라인만 보고싶다면? grep -v 명령어 (0) | 2018.10.26 |
---|---|
[Linux] rsyslog 설정 및 관리 (1) | 2018.10.26 |
[CentOS7 / RHEL 7] systemd : start session ## of user root 해결방법 (0) | 2018.10.23 |
[Linux/CentOS7] 관리자(root) 패스워드 찾기 - 싱글모드 부팅 (0) | 2018.10.17 |
[Linux] vmsvc: Auth Authenticate_User: authentication failure; 에러로그 해결방법 (0) | 2018.10.11 |
[Linux] kernel: set_rtc_mmss: can't update from N to N messages 로그 해결방법 (0) | 2018.10.11 |
[Linux/CentOS7] Chrony 리눅스 시간 동기화 (NTP) (0) | 2018.09.03 |
[Linux / CentOS] CentOS 점검 명령어 모음 (0) | 2018.08.27 |