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

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

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

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

 

find로 찾은 파일에 특정명령어를 수행할 수 있다고 앞서 말씀드린 바가 있습니다.  아래의 예는 test01이라는 계정사용자의 홈디렉토리내에 존재하는 *.bak파일을 찾아서 모두 삭제한 예입니다. 이 예는 디스크공간 부족시에 백업파일을 삭제하고자 할 때에 사용하는 방법입니다. 하지만 백업파일의 형태가 *.bak가 아닌 경우가 있으므로 실무에 적용하실 경우에는 지정하는 파일형식에 주의하시기 바랍니다.


먼저 “find ~test01 -name *.bak -print” test01사용자의 홈디렉토리에 존재하는 *.bak파일을 찾아 보았습니다. 결과 모두 3개의 파일이 존재함을 확인 하였습니다.  확인한 다음 “find ~test01 -name *.bak -exec rm -f {} \;”명령어로 test01사용자의 홈디렉토리내에 존재하는 *.bak파일을 모두 삭제하였습니다.


 

6b48120d6f91d54be0493b6eb253a843_1647845259_0071.png


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


rm -f /home/test01/www/tesfile1.bak
rm -f /home/test01/www/tesfile2.bak
rm -f /home/test01/www/tesfile3.bak

만약 찾아진 파일갯수가 100개였다면 위의 명령어가 100번 실행되었을 것입니다. 여기서 중요한 것을 다시한번 말씀드린다면 -exec는 찾은 파일들을 대상으로 뒤에나오는 명령어를 실행하라는 의미이며 {}는 찾아진 파일들을 하나씩 대입됨을 의미합니다. 그리고 찾아진 파일의 개수만큼 -exec뒤의 명령어가 실행됩니다.  find명령어의 꽃이 -exec의 사용에 있으며 이것을 사용하지 못한다면 find로는 파일찾기기능 이외의 사용은 하지 못합니다. 따라서 이것을 정확하게 이해하시기 바라며, 리눅스 서버관리자로서 일취월장(日就月將)하시려면 반드시 기필코 정확한 의미를 이해하시고 익혀두시기 바랍니다.


관련자료

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

공지사항


뉴스광장


  • 현재 회원수 :  60,034 명
  • 현재 강좌수 :  35,789 개
  • 현재 접속자 :  239 명