매달 1일에 실행되는 스크립트가 있습니다. 이 스크립트에서는 지난달 1일 이전에 수정된 모든 파일을 삭제하고 싶습니다. 예를 들어. 이 스크립트는 3월 1일에 실행됩니다. 2월 1일 이전에 생성된 파일을 모두 삭제하고 싶습니다. 가능합니까?
답변1
쉘 스크립트를 사용하십시오:
#!/bin/sh
dir_to_check='/root/temp/somedir'
last_month=$(date -d "-1 month -$(($(date +%d)-1)) days" +%Y-%m-%d)
find "$dir_to_check" ! -newermt "$last_month" -type f -exec rm {} \;
dir_to_check='/root/temp/somedir'
파일을 검색할 디렉터리(삭제를 시도하지 않았으면 좋겠습니다.)모두지난 달 이전에 생성된 컴퓨터의 파일).
last_month=$(date -d "-1 month -$(($(date +%d)-1)) days" +%Y-%m-%d)
- 변수를 전월 1일로 설정합니다.
find "$dir_to_check" ! -newermt "$last_month" -type f -exec rm {} \;
- 수정된 날짜가 전월 1일 이전인 모든 파일을 검색하여 삭제합니다.
답변2
생성 시간으로 파일을 찾는 것이 가장 쉬운 것은 아니지만, 마지막으로 수정되었거나 마지막으로 액세스된 파일이 귀하에게도 도움이 될 수 있습니까?
가장 간단하지만 정확도가 떨어지는 방법은 검색을 실행하여 수정된 지 31일 이상 된 모든 파일을 선택하는 것입니다. 그런 다음 find로 생성된 파일 목록을 처리하거나 find 명령에서 삭제를 수행할 수 있습니다.
- 마지막으로 변경된 지 31일이 지난 파일을 찾으세요.
find <dir> -type f -mtime +31
- 마지막으로 변경된 지 31일 이상 지난 파일을 찾아서 삭제하세요.
find <dir> -type f -mtime +31 -exec rm {} \;
액세스 시간을 확인하려면 -mtime
로 바꾸면 됩니다 -atime
.
-newerBt <creation_date>
X일 전에 생성된 파일을 찾으려면 (버전 4.3.3 이상) 을 사용할 수 있습니다 . 액세스, 수정 또는 변경 기준을 사용하도록 형식을 조정할 수 있습니다.
- 2018년 1월 1일 이전에 생성된 파일 찾기:
find <dir> -type f -newerBt 2018-01-01