업데이트된 파일이 없으면 디렉터리를 삭제합니다.

업데이트된 파일이 없으면 디렉터리를 삭제합니다.

지난 N일 동안 변경되지 않은 디렉토리만 삭제하고 싶습니다. 변경이란 N보다 최신 내용을 포함하는 모든 파일을 의미합니다.

나는 뭔가를 만들었습니다/다음과 같은 것을 발견했습니다이것 하지만 내가 원하는 대로 되지는 않습니다.

답변1

문제의 디렉터리(여기서는 현재 디렉터리의 각 하위 디렉터리)를 반복하여 find출력된 줄 수를 계산하고 해당 숫자가 0이면 디렉터리를 삭제합니다. 이 find명령에는 지정된 디렉터리에 "N"일 이내에 수정된 파일만 필요합니다(지난 "N"일 이내에 수정됨).

N=3
for dir in */
do
  count=$(find "$dir" -type f -mtime -"$N" -print | wc -l)
  [ "$count" -eq 0 ] && echo rm -r -- "$dir"
done

echo결과가 정확해 보이면 삭제하세요.

답변2

내 생각은 이렇습니다.

 touch -d "4 days ago" .reference_file  
 for dir in */  
 do  
   [ $dir -ot .reference_file ] && rm -rf "$dir"  
 done

먼저 생성 날짜가 "4일 전"으로 설정된 .reference_file 파일을 생성합니다.

-ot그런 다음 해당 작업 디렉터리의 모든 디렉터리에 대해 수정 시간(연산자)이 .reference_file의 수정 시간보다 빠른지 확인합니다 .

그렇다면 - 디렉토리를 삭제합니다.rm -rf $dir

이 스크립트가 실행될 때마다 .reference_file의 수정 날짜는 항상 4일 전으로 업데이트됩니다.

관련 정보