[unix] 비지 박스가 제거 된 시스템에서 x 일보다 오래된 파일 찾기

개발 단위에서 1 주가 지난 파일을 찾아서 삭제해야합니다. 이 장치에는 사용 가능한 유틸리티 수가 제한되어 있습니다. -mtime find의 술어를 사용할 수 없습니다. 이 경우 x 일보다 오래된 모든 파일을 어떻게 확인합니까?



답변

-mtime의 표준 조건이다 find(반대 -delete)하지만 당신은이 버전 벗었 것으로 보입니다 busybox, FEATURE_FIND_MTIME기능이 빌드시에 비활성화되었습니다.

사용중인 busybox를 다시 빌드 할 수 있으면 다음을 수행 할 수 있습니다.

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


답변

보낸 사람 man find:

-시간 n

파일은 마지막으로 n * 24 시간 전에 액세스되었습니다. 파일에 마지막으로 액세스 한 24 시간 동안의 수를 알아낼 때 소수 부분은 무시되므로 -atime +1과 일치 시키려면 파일이 최소 2 일 전에 액세스되어야합니다.

-ctime n

파일 상태가 n * 24 시간 전에 마지막으로 변경되었습니다. 반올림이 파일 상태 변경 시간 해석에 미치는 영향을 이해하려면 -atime에 대한 주석을 참조하십시오.

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


답변