x일이 지난 모든 "콘텐츠"(디렉터리 및 파일)를 어떻게 삭제합니까?

x일이 지난 모든 "콘텐츠"(디렉터리 및 파일)를 어떻게 삭제합니까?

알아요 find -mtime +x -delete. 하지만 모든 "오래된 콘텐츠"(숨겨진 파일 포함)를 삭제하려면 어떻게 사용합니까? 아니면 스크립트에서 사용합니까? 예를 들어, 디렉토리가 있는 경우 target_dir:

  • target_dirX일 동안 깊은 내용이 변경되지 않은 모든 폴더 및 하위 폴더를 삭제합니다 (예: 이전 디렉터리 트리 분기 삭제).
  • target_dirX일 동안 변경되지 않은 모든 파일을 삭제합니다.

편집하다: 관련된이 주제그러나 파일을 먼저 삭제하면 두 번째 단계에서 삭제되지 않도록 이전 디렉터리의 수정 날짜를 "업데이트"하기 때문에 허용된 대답은 실제로 작동하지 않습니다. 숨겨진 파일/목차도 확실하지 않습니다. . .

답변1

많은 테스트를 거친 후 가장 쉬운 방법은 다음을 사용하는 것입니다.

find /path/to/dir -mtime +30 -delete

업데이트된 콘텐츠가 있는 분기를 제외한 모든 항목이 삭제됩니다.

그러나 동시에 다음 사항에 유의하십시오. (a) 작동하지 않습니다: find /path/to/dir/* -mtime +30 -delete; (b) /path/to/dir오래된 콘텐츠만 포함하고 자체적으로 업데이트되지 않은 경우 자체적으로 삭제됩니다.

따라서 디렉터리를 보존하려는 방법은 첫 번째 find명령을 실행한 다음 디렉터리가 아직 존재하는지 확인하고 그렇지 않은 경우 다시 생성하는 것입니다.

관련 정보