그래서 두 번째로 생성되어 저장해야 하는 파일이 많은 폴더가 있는데 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 {} +