오래된 파일만 포함된 Linux 디렉터리 삭제

오래된 파일만 포함된 Linux 디렉터리 삭제

우리는 많은 디렉토리를 가지고 있으며 각 디렉토리에는 2개의 파일이 포함되어 있으며 그 중 하나는 숨겨진 파일입니다. 수정 날짜가 180일보다 오래된 파일만 포함된 모든 디렉터리와 해당 내용을 삭제하려고 합니다. 예를 들어 다음과 같은 경우가 있습니다.

Dir1   Jan 1 2000
     File1A   Jan 1 2000
     File1B   Jan 1 2000
Dir2   Jan 1 2000
     File2A   Jan 1 2014
     File2B   Jan 1 2014
Dir3   Jan 1 2000
     File3A   Jan 1 2014
     File3B   Jan 1 2000

Dir1과 해당 콘텐츠(숨겨진 파일 포함)만 삭제하려면 Linux 명령이 필요합니다. Dir2 및 Dir 3은 각 파일에 180일 이전의 파일이 하나 이상 포함되어 있으므로 변경되지 않은 상태로 유지됩니다.

최신 파일이 포함된 디렉터리를 나열해 보았지만 "기타" 디렉터리를 모두 삭제하는 "역방향" 명령을 찾을 수 없습니다.

답변1

GNU 도구 사용:

for d in Dir*; do
  find "$d" -mindepth 1 -mtime -180 -print -quit | grep -q . ||
    echo rm -rf "$d"
done

만족스러우면 삭제하세요 echo. -q디렉터리가 삭제되지 않은 이유를 알아보려면 삭제하세요 .

답변2

방법 중 하나는 다음과 같습니다.

while read -r line; do rm -rf "${line%%/*}"; done < <(find . -type f -mtime +180 -printf "%P\n")

입력을 파이프 read하고 그에 따라 명령을 실행합니다.

관련 정보