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

시스템내의 특정파일들을 검색하여 자동 삭제하는 방법

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

시스템내의 특정파일들을 검색하여 자동 삭제하는 방법






 

find로 찾은 파일에 특정명령어를 수행할 수 있다고 앞서 말씀 드린 바가 있습니다. 

 

 

 

 아래의 예는 bible이라는 계정사용자의 홈디렉토리내에 존재하는 *.bak파일을 찾아서 모두 삭제한 예입니다. 

 

 

 

이 예는 디스크공간 부족 시에 백업파일을 삭제하고자 할 때에 사용하는 방법입니다. 

 

 

 

하지만 백업파일의 형태가 *.bak가 아닌 경우가 있으므로 실무에 적용하실 경우에는 지정하는 파일형식에 주의하시기 바랍니다.


먼저 “find ~bible -name *.bak -exec ls –l {} \;” bible사용자의 홈디렉토리에 존재하는 *.bak파일을 찾아 보았습니다. 

 

 

 

결과 모두 2개의 파일이 존재함을 확인 하였습니다. 

 

 

 

 확인한 다음 “find ~bible -name *.bak -exec rm -f {} \;”명령어로 bible사용자의 홈디렉토리내에 존재하는 *.bak파일을 모두 삭제하였습니다. 

 

 

 

 

 

[root@su250 ~]# find ~bible -name *.bak -exec ls -l {} \;

-rw-r--r-- 1 root root 0 2008-12-2301:28 /home/bible/original.bak

-rw-r--r-- 1 root root 0 2008-12-2301:28 /home/bible/gowent.bak

[root@su250 ~]#

[root@su250 ~]#

[root@su250 ~]# find ~bible -name *.bak -exec rm -f {} \;

[root@su250 ~]#

[root@su250 ~]# find ~bible -name *.bak -exec ls -l {} \;

[root@su250 ~]#


여기서 “-exec rm -f {}”에서 -exec는 찾아진 파일들을 모두 뒤에 나오는 명령어(rm -f {})로 실행한다는 의미이며 {}는 검색된 2개의 파일들이 하나씩 차례대로 치환됨을 의미합니다. 

 

 

 

, 위의 “-exec rm -f {}”는 아래와 같이 2개의 명령어가 차례대로 실행된 것입니다. 

 

 

 

 

 

rm -f /home/bible/original.bak
rm -f /home/bible/gowent.bak

만약 찾아진 파일개수가 100개였다면 위의 명령어가 100번 실행되었을 것입니다. 

 

 

 

 

 

다시 한번 말씀 드린다면 여기서 중요한 것은 -exec는 찾은 파일들을 대상으로 뒤에 나오는 명령어를 실행하라는 의미이며 {}는 찾아진 파일들을 하나씩 대입됨을 의미합니다. 

 

 

 

따라서 검색된 파일의 개수만큼 -exec뒤의 명령어가 실행됩니다. 

 

 

 

 find명령어의 꽃이 -exec의 사용에 있으며 이것을 사용하지 못한다면 find로는 파일찾기기능 이외의 사용은 하지 못함을 의미합니다. 

 

 

 

 

 

관련자료

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

공지사항


뉴스광장


  • 현재 회원수 :  60,039 명
  • 현재 강좌수 :  35,848 개
  • 현재 접속자 :  98 명