시스템내의 특정파일들을 검색하여 자동삭제하는 방법
작성자 정보
- 관리자 작성
- 작성일
컨텐츠 정보
- 3,073 조회
- 0 추천
- 목록
본문
시스템내의 특정파일들을 검색하여 자동삭제하는 방법
find로 찾은 파일에 특정명령어를 수행할 수 있다고 앞서 말씀드린 바가 있습니다. 아래의 예는 test01이라는 계정사용자의 홈디렉토리내에 존재하는 *.bak파일을 찾아서 모두 삭제한 예입니다. 이 예는 디스크공간 부족시에 백업파일을 삭제하고자 할 때에 사용하는 방법입니다. 하지만 백업파일의 형태가 *.bak가 아닌 경우가 있으므로 실무에 적용하실 경우에는 지정하는 파일형식에 주의하시기 바랍니다.
먼저 “find ~test01
-name *.bak -print”로 test01사용자의 홈디렉토리에 존재하는 *.bak파일을 찾아 보았습니다. 결과 모두 3개의 파일이 존재함을 확인 하였습니다. 확인한 다음 “find ~test01
-name *.bak -exec rm -f {} \;”명령어로 test01사용자의 홈디렉토리내에
존재하는 *.bak파일을 모두 삭제하였습니다.
여기서 “-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로는 파일찾기기능 이외의 사용은 하지 못합니다. 따라서 이것을 정확하게 이해하시기 바라며, 리눅스 서버관리자로서
일취월장(日就月將)하시려면 반드시 기필코 정확한 의미를 이해하시고
익혀두시기 바랍니다.
관련자료
-
이전
-
다음