특정 파일보다 오래된 파일 삭제

특정 파일보다 오래된 파일 삭제

폴더에서 특정 파일보다 오래된 파일을 모두 삭제해야 합니다.
CentOS 7에서 bash를 실행합니다.

이에 대한 해결책이 있지만 더 우아한 방법이 있어야 한다고 생각합니다.

reference_file=/my/reference/file

get_modify_time()
{
    stat $1 | grep -Po "Modify: \K[0-9- :]*"
}

pit=$(get_modify_time $reference_file)
for f in /folder/0000* ; do [[ "$pit" > "$(get_modify_time $f)" ]] && rm $f ; done

답변1

아직 시도하지는 않았지만 find전체 작업을 잘 처리해야 합니다.

$ find dir/ -type f ! -newer reference -delete

... 또는...

$ find dir/ -type f ! -newer reference ! -name reference -delete

원래:

  • ! -newer reference마지막 수정 시간이 보다 작습니다 reference.
  • -delete삭제하세요.
  • ! -name reference아래에도 있고 유지하려는 reference경우 제외하세요 .dir/

이렇게 하면 이전 reference및 그 안에 있는 모든 항목이 제거됩니다 dir/.

답변2

test-nt(보다 최신) 및 (보다 오래됨) 연산자를 사용하여 -ot파일 수정 시간을 비교합니다.

if [ "$file1" -ot "$file2" ]; then
    #do whatever you want;
fi

관련 정보