2014년보다 오래된 파일을 찾아 삭제하는 스크립트

2014년보다 오래된 파일을 찾아 삭제하는 스크립트

2014년 9월 24일 이전의 파일을 찾아 삭제하는 스크립트를 작성하려고 합니다. 어떻게 해야 합니까?

답변1

2014년 9월 24일 00:00h로 설정된 시간으로 더미 파일을 만든 다음 업데이트되지 않은 콘텐츠를 찾아 삭제합니다.

#date format YYYYMMDDhhmm
touch -t 201409240000 dateref
find -type f ! -newer dateref -delete

find이 옵션을 사용하기 전에 이 옵션을 숙지하시기 바랍니다 -delete. 마지막 위치에 있어야 하며 결과를 미리 확인할 필요가 없을 수도 있습니다 -delete.

답변2

(해당 날짜가 포함된 참조 파일)과 함께 finds 옵션을 사용하여 -newer를 무효화할 수 있습니다 . 이를 사용하여 참조 파일을 만들 수 있습니다. 예를 들어:-newer!touch -d

touch -d "2014-09-23 23:59:59.999999999" /tmp/reference-file
find /path/to/directory/ ! -newer /tmp/reference-file -ls

less검사를 위해 파일로 파이프하거나 리디렉션 할 수 있습니다 .

삭제하려는 파일만 삭제된다는 것을 확인한 후 옵션을 -ls로 변경하세요.-delete

(2014년 9월 14일 자정에 생성된 파일을 삭제해도 괜찮다면 이 방법이 효과적입니다. touch -d 2014-09-24이는 ! -newer"이전"을 의미할 뿐만 아니라 "이전 또는 같음"을 의미하기 때문입니다. 대부분의 경우 .999999999가 사용된다고 말합니다. 아마도 "충분히 좋다")

참고: 위의 내용에서는 및 가 모두 GNU find버전 이라고 가정합니다 touch. 다른 버전에서는 작동할 수도 있고 작동하지 않을 수도 있습니다. Linux를 사용하는 경우 GNU 유틸리티가 표준입니다( busybox공간을 절약하기 위해 작은 배포판이나 유사한 배포판을 사용하지 않는 한).

에서 man find:

-newer reference

현재 파일의 마지막 데이터 수정 시간은 참조 파일의 마지막 데이터 수정 시간보다 최근입니다. 참조가 기호 링크이고 -H옵션 또는 -L옵션이 유효한 경우 참조가 가리키는 파일의 마지막 데이터 수정 시간이 항상 사용됩니다.

-anewer수정 시간 대신 액세스 시간을 사용하려면 동일한 매뉴얼 페이지도 참조하세요.

다음 -newerXY옵션도 관련이 있습니다.

- 최신 XY 참조

고려 중인 파일의 타임스탬프 X가 파일에서 참조하는 타임스탬프 Y보다 새로운 경우 성공합니다. 문자 X와 Y는 다음 중 하나일 수 있습니다.

 a   The access time of the file reference
 B   The birth time of the file reference
 c   The inode status change time of reference
 m   The modification time of the file reference
 t   reference is interpreted directly as a time

일부 조합은 유효하지 않습니다. 예를 들어 to Xbe는 유효하지 않습니다 t. 일부 조합은 모든 시스템에서 구현되지 않습니다. 예를 들어 B모든 시스템이 이를 지원하는 것은 아닙니다. 유효하지 않거나 지원되지 않는 조합을 지정하면 XY치명적인 오류가 발생합니다.

-d시간 사양은 GNU 옵션에 대한 인수 로 해석됩니다 date.

참조 파일의 생성 시간을 사용하려고 시도했지만 생성 시간을 확인할 수 없는 경우 치명적인 오류 메시지가 나타납니다.

검사 중인 파일의 빌드 시간과 관련된 테스트를 지정하면 빌드 시간을 알 수 없는 모든 파일에 대해 이 테스트가 실패합니다.

답변3

다음 스크립트를 사용해 보세요.

#!/bin/bash

d2=$(date +%s)
d1=$(date -d "2014-09-24" +%s)
d=$(( (d2 - d1) / 86400 ))

find ./ -mtime +$d -delete

먼저 -delete올바른 파일을 찾았는지 확인해 보세요. 100% 확실할 때 추가 하고 조회 -delete대신 원하는 경로를 사용하세요 ../

관련 정보