우리는 많은 디렉토리를 가지고 있으며 각 디렉토리에는 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
하고 그에 따라 명령을 실행합니다.