폴더에서 특정 파일보다 오래된 파일을 모두 삭제해야 합니다.
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