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


9

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


2
" mtime사용할 수 없음"의 의미가 확실하지 않습니다. 이름을 알고있는 유틸리티가 아닙니다.
Kusalananda

/ path / to / my / folder $ 찾기 -type f -mtime +7 찾기 삭제 : 인식되지 않음 : -mtime
Ravi

사용중인 리눅스의 배포판을 공유하십시오.
Siva

3
가없는 busybox처럼 보입니다 FEATURE_FIND_MTIME. 되어 FEATURE_FIND_NEWER사용 가능? 합니까의 find -newer작업? 당신합니까 test유틸리티 또는 [당신의 내장 sh지원은 -nt?
Stéphane Chazelas

1
당신은 당신이 그를 사용할 수있는 경우이 문제를 해결할 수 touch -d/ date +%s[ file -nt other-file ]
스테판 Chazelas가에게

답변:


11

-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

1
예, busybox는 더 가벼운 버전이었습니다. 재건축 후 find . -mtime +6 -type f -exec rm {} \;나를 위해 일 했습니다
Ravi

2

보낸 사람 man find:

-시간 n

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

-ctime n

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

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


OP에 대한 추가 질문은 답변이 아닌 설명 을 명확하게하는 것으로 이루어져야 합니다 .
Jeff Schaller
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.