날짜별로 많은 수의 파일을 삭제하는 가장 좋은 방법

날짜별로 많은 수의 파일을 삭제하는 가장 좋은 방법

그래서 두 번째로 생성되어 저장해야 하는 파일이 많은 폴더가 있는데 90일 후에만 삭제할 수 있습니다. 추측할 수 있듯이 많은 파일을 생성하고 그 이후에는 90일 90일이 지난 파일을 삭제할 수 있었습니다. 그러나 파일이 너무 많고 시스템에서 목록이 너무 커서 삭제할 수 없다고 불평하기 때문에 이러한 파일을 검색하는 부분에서 멈췄습니다.

이것을 통과할 수 있는 가장 좋은 해결책은 무엇입니까? 파일 이름은 타임스탬프 패턴이므로 그걸로 시작할 수 있지만 잠시 후 모든 파일이 삭제되었는지 확인하고 싶습니다...

나는 이러한 방법을 시도했습니다

rm -rf *
find /path/to/files/ -type f -name '*.ts' -mtime +90 -exec rm {} \; 

또한 파일 이름별로 삭제하는 스크립트를 만들 수 있었지만 이 방법을 사용하면 모든 파일이 삭제된다고 보장할 수 없습니다.

답변1

파일이 처음 생성된 이후 수정되지 않은 경우, 90일 이상 수정되지 않았다면 삭제할 수 있습니다.

find /path/to/folder ! -type d -mtime +90 -delete

또는

find /path/to/folder ! -type d -mtime +90 -exec rm -f {} +

( find-delete작업을 지원하지 않는 버전의 경우)

보안상의 이유로 먼저 이 명령의 비파괴 버전을 사용하고 제거하려는 내용이 정확히 제거되는지 확인해야 합니다. 특히나 cron이와 유사한 수단을 통해 이를 자동화하려는 경우에는 더욱 그렇습니다.예를 들어:

find /path/to/folder ! -type d -mtime +90 -print

참고하시고 -mtime +90확인하세요시간 변경파일 및 반환진짜정수 일수(86400초 단위)로 내림하면 연령은 다음과 같습니다.엄격하게90보다 크면 마지막으로 수정된 날짜가 91일 이상인 파일이 일치됩니다.

답변2

면책조항: 나는 현재 저자이거나생가죽(오른쪽 회전) (바라보다https://github.com/raforg/rawhide).

그리고생가죽(오른쪽 회전) 다음과 같이 할 수 있습니다.

rh -UUU /path/to/files 'f && "*.ts" && old(90*days)'

-UUU일치하는 파일을 연결 해제/삭제/삭제합니다.

/path/to/files검색 경로입니다.

남은 것은 검색 기준뿐입니다.

f일반 파일을 일치시킵니다.

"*.ts"이름이 .로 끝나는 파일과 일치합니다 .ts.

old(90*days)최소 90일 전에 마지막으로 수정된 파일과 일치합니다.

답변3

이전 답변에 따르면 디렉터리를 삭제해야 하는 경우 옵션을 사용할 수 있습니다 -maxdepth.

삭제하려는 항목을 미리 봅니다.

find . -maxdepth 1 -mtime +1 -print

모두 삭제하세요.

find . -maxdepth 1 -mtime +1 -exec rm -rf {} +

관련 정보