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

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 :

[Linux] 일정 기간 내에 변경된 file list - find 명령으로

2014. 10. 13. 12:09 from Dev/etc

서버 작업을 하다 보면 이러저러한 이유로 일정 기간 이내에 변경된 파일을 뽑아 보고 싶은 경우가 생깁니다.

find의 기본 명령 모양은 다음과 같습니다 :


find / -name foo


이러면 이름이 foo 인 파일들이 주르륵 나옵니다. find의 검색 기준은 여러 가지를 동시에 적용할 수 있는데, 따로 정해주지 않으면 이 조건들은 모두 AND로 봅니다. 모두 만족시키는 것만 표시를 해주는 거지요.

오늘 우리가 찾고 싶은 건 변경 일자 기준입니다. 그러면 타입은 파일이고, 변경일자로 7일 이내를 찾아볼까요?


find / -type f -mtime -7


이렇게 해주시면 됩니다. 이렇게 해서 나온 결과를 xargs 등등으로 처리해주면 더 복잡한 작업도 할 수 있겠지요?

마지막으로, 30일~45일 이전에 변경된 파일은 어떻게 하면 될까요?


find / -type -mtime +30 -mtime -45


이렇게 해주시면 됩니다. -mtime의 값으로 +값은 그 이후, -값은 이전, 숫자만 주면 정확히 그날을 기준으로 찾아줍니다.

Posted by banasun :