지난 이틀 전에 생성된 모든 폴더를 삭제하는 스크립트가 있습니다. 이제 월요일에는 지난 주의 모든 폴더가 삭제되는데, 이는 원하지 않습니다.
이 명령에 대해 근무일만 고려하도록 선택할 수 있습니까? 전체 스크립트는 매일 실행됩니다. 나는 이것을 사용하고 있습니다 :
find /my-folder/sub-folder/ -type d -ctime +1 | xargs rm -rf
답변1
다음을 수행할 수 있습니다.
find /my-folder/sub-folder/ -type d -ctime "+$((
1 + 2 * ($(date +%u) <= 2) ))" -prune -exec echo rm -rf {} +
즉, 현재 날짜가 1(월요일) 또는 2(화요일)인 경우(평일에만 스크립트를 실행한다고 가정) 2일을 추가합니다.
공백이나 백슬래시 또는 따옴표가 포함된 파일 이름에 대해 표준 대안을 사용하면 실패하기 때문에 -prune
삭제하고 교체하려는 디렉토리에 들어갈 필요가 없기 때문에 하나를 추가했습니다 .xargs
-exec ... {} +
ctime
디렉터리의 파일이 수정되거나 파일이 하위 디렉터리에 추가 또는 제거될 때 디렉터리의 목차는 업데이트되지 않습니다 .