한달전 (또는 특정 날짜, 며칠 이전) 파일들 모두 삭제하기

2015. 3. 6. 10:41 from Dev/Linux

오늘은 간단한 명령이지만 정작 쓰려면 긴가민가 하는 명령을 하나 설명드립니다.

서버를 운영하다 보면 (따로 관리자 없이) 로그파일이나 더이상 이용하지 않는 임시 파일들이 많이 생깁니다. 저 같은 경우는 네이버 신디케이션을 이용하면서 네이버쪽에 ping 요청하면서 신디케이션 문서를 xml로 생성해 놓는데요, 몇 천개를 하다 보니 ping 요청을 한다고 중국집 마냥 바로 와서 가져가는게 아니니 서버에 계속 쌓이게 되더군요. 생각없이 있다가 디렉토리를 보니 파일이 너무 많아졌습니다. -_-;;

삭제를 하려고 해도 이게 네이버에서 가져간 건지 아닌지 모르니 - 경험상 며칠씩 걸리는 경우도 있더군요 - 10일 정도 기간을 두고 그 이전 xml 파일만 삭제할 필요가 생겼습니다.

이럴 때에는 아래와 같이 하면 됩니다 :



find *.xml -mtime +10 -exec rm {} \;


find 명령은 다들 아시지요? 첫번째 인수는 디렉토리 이름이나, * 등 아무거나 들어가도 됩니다.

두번째 인수 -mtime은 기간을 일 단위로 정해줍니다. 한 달로 하려면 -mtime +30 하면 되겠지요.

세번째 -exec는 다음 명령으로 전달하는 부분입니다. 저는 삭제를 하려고 하니 rm 명령어를 이용하겠습니다. 그 뒤에 나오는 {} 과 \; 는 꼭 입력해주셔야 합니다.





Update: 명령이 실행된 파일들을 보고 싶으시면 -print 옵션을 추가하시면 됩니다.



find *.xml -mtime +10 -print -exec rm {} \;
Posted by banasun :