강좌
클라우드/리눅스에 관한 강좌입니다.
리눅스 분류

find실무1편: find의 파일검색 기본사용법 익히기

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

find실무1: find의 파일검색 기본사용법 익히기

 

 

 

find의 첫번째 사용예로서 리눅스 시스템내에 용량이 0인 비어있는 파일을 검색하는 것이다.

 

 

 

 다음은 비어있는 파일을 검색하는 find의 예이다.

 

 

 

 용량이 0인 파일은 당연히 검색대상이 된다.

 

 

 

 또한 비어있는 디렉토리가 있다면 당연히 검색대상이 될 것이다.

 

 

 

 

 

[root@sulinux ~]#find / -empty -exec ls -l {} \;

-rwx------ 1 root root 0  6 13  2022 /root/bin/log/sys.backdoor

-rw------- 1 root root 0  2 12  2022 /root/.gconf/apps/metacity/%gconf.xml

-rw------- 1 root root 0  2 12  2022 /root/.gconf/apps/gnome-volume-control/%gconf.xml

-rw------- 1 root root 0  2  9  2022 /root/.gconf/apps/panel/%gconf.xml

-rw------- 1 root root 0  2 12  2022 /root/.gconf/apps/panel/toplevels/%gconf.xml

-rw------- 1 root root 0  2  9  2022 /root/.gconf/apps/panel/applets/clock/%gconf.xml [root@sulinux ~]#

 

 

 

 

모두 용량이 0인 파일들이 검색되었다.

 

 

 

 , 위의 find검색결과에서 우리는 파일의 용량이 모두 0이라는 것을 확인할 수 있다.

 

 

 

 파일의 용량이 0이거나 비어있는 디렉토리를 검색할 때에 매우 유용한 방법이라고 할 수 있다.

 

 

 

 위와 같이 용량이 0인 파일이 검색되었다면 그 용도와 생성경위에 대하여 반드시 확인해봐야 한다.

 

 

 

 

 

이번 예에서 주의할 것은 “-exec ls -l \;”에서 맨 마지막의 {} \;사이는 반드시 공백을 두어야한다.

 

 

 

 {} \;을 붙이게 되면 정상적인 검색이 되지 않는다.

 

 

 

 

 

 

다음은 지정한 UID 소유의 모든 파일을 검색하는 예이다.

 

 

 

 모든 계정사용자들은 시스템 내에서 유일한 UID를 가지고 있다.

 

 

 

 특정 소유자의 파일을 찾고자 할 때에는 특정UID를가진 파일을 찾으면 된다.

 

 

 

 물론 특정 ID를 가진 파일을 찾아도 같은 결과를 얻을 수 있다.

 

 

 

 

[root@sulinux ~]#find / -uid 500 -exec ls -l {} \;

-rwxr-xr-x 1 sspark sspark 294136  3 18 10:48 /home/sspark/xfsdump

-rwxr-xr-x 1 sspark sspark 219692  3 18 10:48 /home/sspark/tc

-rwxr-xr-x 1 sspark sspark 368000  3 18 10:48 /home/sspark/mkfs.xfs

-rw-r--r-- 1 sspark sspark 22060  3 18 10:41 /home/sspark/fb.modes

-rwxr-xr-x 1 sspark sspark 1136452  3 18 10:48 /home/sspark/dump

-rw-r--r-- 1 sspark sspark 24  7  9  2022 /home/sspark/.bash_logout

-rwxr-xr-x 1 sspark sspark 175600  3 18 10:48 /home/sspark/ip

-rw-r--r-- 1 sspark sspark 224  2  9  2022 /home/sspark/.bash_profile

-rw-r--r-- 1 sspark sspark 59  3 18 10:41 /home/sspark/filesystems

-rw------- 1 sspark sspark 2445  3 19 07:00 /home/sspark/.bash_history

-rw-r--r-- 1 sspark sspark 229  3  2  2022 /home/sspark/.bashrc

-rwxr-xr-x 1 sspark sspark 2382684  3 18 10:48 /home/sspark/nash

[root@sulinux ~]#

 

 

 

위의 검색결과는 모두 UID 500인 파일들만 검색되었다.

 

 

 

 , UID 500인 사용자는 sspark이므로 위의 예는 UID 500 인 모든(/) 파일을 찾아서(find) “ls -l”로 화면 출력하라는 find명령문의 결과인 것이다.

 

 

 

 

 

이번에는 바로 앞의 예와 유사한 것이지만 UID가 아닌 사용자의 ID를 지정하여 그 사용자의 ID소유로 된 파일들을 검색하는 예이다.

 

 

 

 , 앞의 예와 같이 UID로 찾을 수도 있지만 특정 ID의 소유파일을 찾을 때에는 일반적인 방법으로 다음과 같이 사용한다.

 

 

 

 

 

[root@sulinux ~]#find / -user sulinux -print

/home/sulinux

/home/sulinux/ip.htm

/home/sulinux/mkfs.xfs

/home/sulinux/gfs2_tool.htm

/home/sulinux/dump

/home/sulinux/.bash_logout

/home/sulinux/filesystems.htm

/home/sulinux/.bash_profile

/home/sulinux/crip

/home/sulinux/.bash_history

/home/sulinux/.viminfo

/home/sulinux/.bashrc

/home/sulinux/fb.xfs

/home/sulinux/grub.htm

/home/sulinux/nash.htm

/home/sulinux/xting.htm

/home/sulinux/tdu.htm

/var/spool/mail/sulinux

[root@sulinux ~]#

 

 

 

 

리눅스시스템내에 존재하는 sulinux소유의 모든 파일을 검색한 예이다.

 

 

 

 , 위의 예는 sulinux라는 계정사용자(-user sulinux)의 모든(/) 파일을 찾아서 보여달라(-print)find명령문이다.

 

 

 

 

 

참고로 find문에서 사용되는 “-print”“-exec ls -l {} \;”의 차이점을 잘 알고 있어야한다.

 

 

 

 “-print”는 검색결과를 파일의 절대경로로 표시하는 반면 “-exec ls -l \;”“ls -l”과 같은 형식으로 검색결과를 표시한다.

 

 

 

 

 

다음은 검색대상을 /(시스템전체)가 아닌 특정 사용자의 홈디렉토리내에서 특정 파일을 검색한 예이다.

 

 

 

 시스템관리자는 다양한 파일검색방법을 알고있어야 한다.

 

 

 

 실무에서도 특정계정사용자의 홈디렉토리내에 존재하는 특정 파일을 찾는 방법이 많이 사용된다.

 

 

 

 

 

[root@sulinux ~]#find /home/sulinux -name *.dat -exec ls -l {} \;

-rw-r--r-- 1 root root 0  3 22 20:47 /home/sulinux/linux.dat

-rw-r--r-- 1 root root 0  3 22 20:47 /home/sulinux/sulinux.dat

[root@sulinux ~]#

 

 

 

 

위의 예는 특정 계정사용자의 홈디렉토리(/home/sulinux)이하에 존재하는 모든 “*.dat”을 찾아서 보여달라(-exec ls -l {}\;)는 예이다.

 

 

 

 위의 예는 사용자의 홈디렉토리를 직접 지정한 경우로서 사용자의 홈디렉토리를 알고 있을 경우에는 이 방법을 쉽게 사용할 수 있다.

 

 

 

 하지만 만약 사용자의 홈디렉토리를 모르고 있다면 다음과 같이 ~ID형식으로 사용자의 홈디렉토리를 표시하면 동일한 검색을 할 수 있다.

 

 

 

 

 

, 아래의 예는 위와 동일한 예로서 sulinux라는 사용자의 홈디렉토리를 모를 경우에 ~sulinux라고 지정한 것이다.

 

 

 

 , ~sulinux /home/sulinux와 동일한 의미이다.

 

 

 

 보다 정확한 표현으로는 ~sulinux /etc/passwd파일에 존재하는 sulinux라는 사용자의 홈디렉토리위치를 의미한다.

 

 

 

 

[root@sulinux ~]#find ~sulinux -name *.dat -exec ls -l {} \;

-rw-r--r-- 1 root root 0  3 22 20:47 /home/sulinux/linux.dat

-rw-r--r-- 1 root root 0  3 22 20:47 /home/sulinux/sulinux.dat

[root@sulinux ~]#

 

 

 

, 위의 두가지 예는 같은 것이다.

 

 

 

 간혹, 사용자의 홈디렉토리위치가 /home이 아니라 /user, /host등과 같을 경우가 있다.

 

 

 

 이때에는 위의 예처럼 ~ID방식을 사용하면 사용자의 홈디렉토리위치를 정확하게 지정할 수 있다.

 

 

 

 

 

 

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,042 명
  • 현재 강좌수 :  35,846 개
  • 현재 접속자 :  99 명