Encontre e remova o diretório do bash

0
#!/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

Quando executo o script de teste acima, se o diretório test1 não estiver lá, ele será executado corretamente. No entanto, se o diretório test1 estiver lá, recebo o seguinte erro, mesmo que remova o diretório.

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

Como posso parar o erro?

    
por eekfonky 16.11.2016 / 12:28

1 resposta

1

Use -prune nos diretórios que você excluirá para informar find para não tentar encontrar arquivos neles:

find $BACKUPDIR/test1 -mtime +6 -prune -exec rm -rf {} \;
    
por 16.11.2016 / 12:58

Tags