[bash] X 시간보다 오래된 파일을 삭제하는 방법

오래된 파일을 삭제 해야하는 bash 스크립트를 작성 중입니다.

현재 다음을 사용하여 구현되었습니다.

find $LOCATION -name $REQUIRED_FILES -type f -mtime +1 -delete

1 일이 지난 파일은 삭제됩니다.

그러나 하루보다 세밀한 해상도가 필요하다면 6 시간이 지나면 어떻게 되나요? find와 -mtime을 사용하는 것처럼 좋은 깨끗한 방법이 있습니까?



답변

당신이 있습니까 find-mmin옵션을? 최종 수정 이후의 분 수를 테스트 할 수 있습니다.

find $LOCATION -name $REQUIRED_FILES -type f -mmin +360 -delete

또는 tmpwatch동일한 작업을 수행하기 위해 사용 을 살펴보십시오 . tmpreaper의견에서 phjr도 추천 했다.


답변

이 트릭을 할 수 있습니다 : 1 시간 전에 파일을 만들고 -newer file인수를 사용하십시오 .

(또는 touch -t그러한 파일을 만드는 데 사용 하십시오).


답변

여기 나를 위해 일한 접근법이 있습니다 (그리고 위에서 사용 된 것을 보지 못했습니다)

$ find /path/to/the/folder -name *.* -mmin +59 -delete > /dev/null

폴더를 그대로 유지하면서 59 분보다 오래된 모든 파일을 삭제합니다.


답변

SunOS 5.10의 경우

 Example 6 Selecting a File Using 24-hour Mode


 The descriptions of -atime, -ctime, and -mtime use the  ter-
 minology n ``24-hour periods''. For example, a file accessed
 at 23:59 is selected by:


   example% find . -atime -1 -print




 at 00:01 the next day (less than 24 hours  later,  not  more
 than one day ago). The midnight boundary between days has no
 effect on the 24-hour calculation.


답변

-mmin은 몇 분 동안입니다.

매뉴얼 페이지를보십시오.

man find

더 많은 유형.


답변

“find”버전에 “-mmin”이없는 경우 “-mtime -0.041667″은 “지난 1 시간 이내”와 매우 비슷해 지므로 다음과 같이 사용하십시오.

-mtime +(X * 0.041667)

따라서 X가 6 시간을 의미하는 경우 :

find . -mtime +0.25 -ls

24 시간 * 0.25 = 6 시간이므로 작동


답변

@iconoclast가 다른 답변 에 대한 의견 에서 궁금해하는 방식으로 진행할 수있는 작업은 다음과 같습니다 .

사용자 또는 crontab을 사용 /etc/crontab하여 파일을 만듭니다 /tmp/hour.

# m h dom mon dow user  command
0 * * * * root /usr/bin/touch /tmp/hour > /dev/null 2>&1

그런 다음 이것을 사용하여 명령을 실행하십시오.

find /tmp/ -daystart -maxdepth 1 -not -newer /tmp/hour -type f -name "for_one_hour_files*" -exec do_something {} \;