대규모 디렉터리 구조를 반복하고 X일 이내에 파일을 삭제합니다.

대규모 디렉터리 구조를 반복하고 X일 이내에 파일을 삭제합니다.

첫 번째 Linux 코딩 작업입니다.

저는 서버의 모든 폴더를 순회하고 X일(약 20일)이 지난 모든 파일을 삭제하는 시간 제한 작업에 대한 스크립트를 작성해 달라는 요청을 받았습니다.

내 집 Redhat 컴퓨터에서 아래 코드를 테스트했습니다.

물론 이 코드를 실제로 사용하기 전에는 많은 두려움이 있었습니다. 아래 코드는 잘 작동하지만 "X"일 이내에 파일(디렉토리 아님)만 삭제하는 데도 필요합니다.

시스템의 수백 개의 디렉터리와 수천 개의 파일을 다운로드하거나 수정하는 것은 불가능합니다. 처음 이 프로그램을 실행했을 때 고객이 파일을 우리 서버에 두고 잊어버렸기 때문에 10,000개 이상의 파일이 삭제될 것으로 예상했습니다. (이것이 그들을 깨울 것이다!)

다섯 번째 줄 "elif [ -f "$i" 를 변경해 보았습니다.-a -m시간 +21];Then" - 파일 삭제(rm -i "$1")

작동하지 않습니다. "[:mtime:binary 연산자가 필요합니다."라고 표시됩니다.

또 다른 elif 문이 필요합니까, 아니면 선택 기준("X"일보다 오래된 파일만)이 한 줄에서 작동하도록 할 수 있습니까?

암호:

#!/bin/bash 

print_folder_recurse() {
    for i in "$1"/*; do
        if [ -d "$i" ]; then
            print_folder_recurse "$i"
        elif [ -f  "$i" ]; then
            rm -i  $i #(put the -i in there for #testing, it will be removed)
        fi    
    done
}

경로 "/go/to/your/happy/place"

echo "Delete path: $path"
print_folder_recurse $path

감사해요.

답변1

find /your/directory -type f -daystart -mtime +20 -delete

-delete테스트 실행을 수행하려면 삭제하세요 .

관련 정보