간단한 비지박스를 사용하여 시스템에서 x일보다 오래된 파일 찾기

간단한 비지박스를 사용하여 시스템에서 x일보다 오래된 파일 찾기

내 개발 유닛에서 1주일이 지난 파일을 찾아서 삭제해야 합니다. 이 컴퓨터에서 사용할 수 있는 유틸리티의 수는 제한되어 있습니다. -mtime find조건자를 사용할 수 없습니다. 이 경우 x일보다 오래된 모든 파일을 확인하는 방법은 무엇입니까?

답변1

-mtime예, 표준 술어 find(반대 반대 )이지만 빌드 시 기능이 비활성화된 간단한 -delete버전이 있는 것 같습니다 .busyboxFEATURE_FIND_MTIME

비지박스를 활성화한 상태로 재구축할 수 있다면 다음을 수행할 수 있어야 합니다.

find . -mtime +6 -type f -exec rm -f {} +

또는 FEATURE_FIND_DELETE활성화된 경우:

find . -mtime +6 -type f -delete

그렇지 않은 경우 일주일 전 수정 시간으로 설정된 파일에 대해 다른 옵션을 사용할 수 있습니다 find -newer(활성화된 것으로 가정).FEATURE_FIND_NEWER

touch -d "@$(($(date +%s) - 7 * 86400))" ../ref &&
  find . ! -type f -newer ../ref -exec rm -f {} +

또는 -newer사용할 수 없지만 sh지원되는 경우:[-nt

touch -d "@$(($(date +%s) - 7 * 86400))" ../ref &&
  find . ! -type f -exec sh -c '
    for f do
      [ "$f" -nt ../ref ] || printf "%s\0" "$f"
    done' sh {} + |
    xargs -0 rm -f

답변2

에서 man find:

-a시간 n

파일은 n*24시간 전에 마지막으로 액세스되었습니다. find가 24시간 전에 파일에 마지막으로 액세스한 기간을 계산할 때 모든 소수 부분은 무시됩니다. 따라서 -atime +1을 일치시키려면 파일에 적어도 2일 전에 액세스했어야 합니다.

-c 시간 n

파일 상태가 n*24시간 전에 마지막으로 변경되었습니다. 반올림이 파일 상태 변경 시간에 미치는 영향에 대한 설명은 -atime에 대한 설명을 참조하세요.

삭제하려는 파일의 사용 사례에 따라 이것이 유일한 다른 옵션입니다 find. 왜 mtime사용할 수 없나요? 어떤 파일 시스템을 사용하고 있나요? 다른 옵션을 살펴보셨나요?

관련 정보