Eu acho que você não está realmente no diretório DIR; você executa cd
em um subshell, mas o diretório de trabalho dos comandos restantes permanece em $TgtDir$c/$DirNew
. Você pode verificar isso chamando pwd
após echo $DIR
.
Solução: chame cd
diretamente, não use um subshell nem atribua o resultado a uma variável. Adicione o caminho de destino absoluto ao comando de cópia.
for c in ax
do
mkdir $TgtDir$c/$Date
DIR=$( dirname "${BASH_SOURCE[0]}" )
cd "${DIR}"
pwd
find . -iname $tgt -exec cp --parents {} $TgtDir$c/$Date \;
done
Alternativa: use o diretório de origem em vez de "." no comando find.
for c in ax
do
mkdir $TgtDir$c/$Date
cd $TgtDir$c/$DirNew
DIR=$( dirname "${BASH_SOURCE[0]}" )
find "${DIR}" -iname $tgt -exec cp --parents {} ../$Date \;
done
Nota: o código não é testado.