나는 다른 디렉터리에 있는 파일의 수명을 확인하고 만료 날짜가 지난 파일을 삭제할 수 있는 스크립트를 원합니다. 생성 날짜가 다른 수십만 개의 파일이 있을 수 있습니다. 일부 디렉토리에는 파일이 그렇게 많지 않습니다. 약 100개의 디렉토리가 있습니다. 이러한 디렉토리에는 유효 기간이 다릅니다. 저는 구성을 위해 YAML을 사용하고 스크립팅 언어로 Perl 5 또는 Python 3을 사용하는 것을 고려하고 있습니다. 어느 쪽이 일을 더 빨리 끝내나요? 이 작업은 몇 시간(3~5) 내에 완료될 수 있습니까, 아니면 며칠이 소요됩니까?
이 스크립트는 Linux에서 실행됩니다.
답변1
이러한 디렉토리에는 유효 기간이 다릅니다.
따라서 루프와 최대 값이 필요합니다. 100 통화 find
.
find ... -delete
해당 방법(또는 다른 방법을 직접 사용)을 사용하면 몇 초 밖에 걸리지 않을 것 같습니다.어떻게이것을 보조라고 합니다.
구성 파일은 2열 파일로 단순화될 수 있습니다.
한 가지 최적화 방법은 동일한 exp를 가진 디렉터리를 그룹화하는 것입니다. 예를 들어, 함께 데이트를 해보세요:
find dir1 dir2 dir3 -type f -mtime +7 -delete
(최소 8일이 지난 일반 파일은 마지막 수정 시간을 기준으로 삭제됩니다.)
find dir4 dir5 dir6 -type f -mtime +30 -delete
(최소 31일이 지난 일반 파일은 마지막 수정 시간을 기준으로 삭제됩니다.)
따라서 Perl이 필요하지 않지만 편안한 YAML 구문 분석 및 일부 목록 정렬을 위해서는 물론입니다.
생각해 보세요. "find-ML"을 직접 사용할 수 있습니다.
find dir1 dir2 dir3\
d7 d13\
d42 d44 d46\
-type f -mtime +7 -delete
find dir4 dir5 dir6\
d11 d19\
d61 d62 d63\
-type f -mtime +30 -delete
find ...\
...\
-type f -mtime +XY -delete
데이터와 코드를 혼합하는 것이 보기 흉하다고 말할 수 있지만 귀하의 경우에는 95%가 데이터입니다. 이 코드는 YAML 파일과 마찬가지로 요일을 기준으로 디렉터리를 그룹화하기 위한 것입니다. 디렉토리의 만료 날짜 할당에 대한 몇 가지 규칙이 있을 수 있습니까? 아니면 어쨌든 손으로 해야 합니다. 왜 그렇게 간단하지 않습니까? (설정 및 유지 관리에 약간의 시간이 걸립니다)