본문 바로가기
리눅스

[Linux] 리눅스 파일 검색, 찾기 명령어 find 사용법 정리

by 공대냥이 2018. 10. 12.
반응형

우리가 흔히 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

------------------ 이하 생략 ---------------------

/* -mtime은 파일의 내용이 마지막으로 변경된 시간을 지정할 때 사용하는 옵션이다 */
-mtime [+-]n :   숫자 n앞에 +-가 없으면 정확히 n일, +n 이면 n일 초과, -n이면 n일 미만의 파일을 검색한다.


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 가 있다.







반응형