개발 단위에서 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
사용할 수 없습니까? 어떤 파일 시스템을 사용하고 있습니까? 다른 옵션을 살펴 보셨습니까?