90일이 지난 디렉터리를 찾아서 삭제하지만 2개의 하위 디렉터리를 무시하는 cron을 어떻게 만들 수 있나요?

90일이 지난 디렉터리를 찾아서 삭제하지만 2개의 하위 디렉터리를 무시하는 cron을 어떻게 만들 수 있나요?

내가 소유한 것

현재 90일이 지난 디렉터리와 파일을 찾아 삭제하도록 cron이 설정되어 있습니다.

나는 필요하다

90일이 지난 디렉터리와 파일을 삭제할 때 crontab이 두 디렉터리를 무시하도록 하고 싶습니다.

내가 지금까지 무엇을 했는지

이 crontab은 디렉터리와 파일을 제거하고 dir1을 무시하지만 두 번째 -not -path에 지정했음에도 불구하고 dir2에서 디렉터리와 파일을 계속 제거합니다.

00 4 * * * sudo find /home/*/* -type d -not -path "/home/dir1/*" -not -path "/home/dir2/*" -mtime +90 -exec rm -r "{}" \;
02 4 * * * sudo find /home/*/* -type f -not -path "/home/dir1/*" -not -path "/home/dir2/*" -mtime +90 -exec rm "{}" \;

실제적인 문제

디렉터리/파일을 찾고 삭제할 때 두 개의 디렉터리를 어떻게 무시할 수 있습니까? 위의 예에 따라 작동하도록 할 수 없으므로 -not -path를 두 번 지정하면 됩니까?

답변1

첫째, crontab명령 필드가 가 아닙니다 bash. bash명령 필드를 남용하기보다는 다른 곳에 저장된 스크립트를 호출해야 합니다 .

읽고man find xargs

#!/bin/bash
find /home/*/* -type d \( -name dir1 -o -name dir2 \) -prune -type f -mtime +60 -print0 | \
  xargs -0 -r rm

관련 정보