내 개발 유닛에서 1주일이 지난 파일을 찾아서 삭제해야 합니다. 이 컴퓨터에서 사용할 수 있는 유틸리티의 수는 제한되어 있습니다. -mtime
find
조건자를 사용할 수 없습니다. 이 경우 x일보다 오래된 모든 파일을 확인하는 방법은 무엇입니까?
답변1
-mtime
예, 표준 술어 find
(반대 반대 )이지만 빌드 시 기능이 비활성화된 간단한 -delete
버전이 있는 것 같습니다 .busybox
FEATURE_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
사용할 수 없나요? 어떤 파일 시스템을 사용하고 있나요? 다른 옵션을 살펴보셨나요?