Bash에서 디렉토리 찾기 및 삭제

Bash에서 디렉토리 찾기 및 삭제
#!/bin/bash

# error handling
function error_handler() {
  echo "Error occurred in script at line: ${1}"
  echo "Line exited with status: ${2}"
}

trap 'error_handler ${LINENO} $?' ERR

set -o errexit
set -o errtrace

set -o nounset

# backup dir vars
BACKUPDIR=$(dirname "$0")

# check for directories
if [[ -d $BACKUPDIR/test1 ]]; then
  find $BACKUPDIR/test1 -mtime +6 -exec rm -rf {} \;
else
  :
fi

위의 테스트 스크립트를 실행할 때 디렉터리가 test1존재하지 않으면 제대로 작동합니다. 하지만 해당 디렉터리가 test1있으면 해당 디렉터리를 삭제해도 다음과 같은 오류가 발생합니다.

Test ./testFind.sh  
find: ‘./test1’: No such file or directory
Error occurred in script at line: 20
Line exited with status: 1

오류를 어떻게 중지할 수 있나요?

답변1

-prune삭제하려는 디렉토리에서 find파일을 찾지 말라고 지시하려면 다음을 사용하세요.

find $BACKUPDIR/test1 -mtime +6 -prune -exec rm -rf {} \;

관련 정보