As linhas devem estar em uma ordem diferente:
exec &> >(while read line; do echo "$(date +'%h %d %Hh%Mm%Ss') $line" >> /dir2/LogsCopiaDBs.txt; done;)
find /dir/ -type f -mtime -1 -exec cp -v -a --parents "{}" /dir2/ \; >> /dir2/LogsCopiaDBs_$(date +%d-%m-%Y).txt
A linha exec
substituirá STDOUT
pelo comando especificado, e a linha find
executará as ações de cópia e a saída para STDOUT
, que será substituída pelo seu comando de registro.
Eu acho que você quer conseguir que você preencha dois arquivos de log de uma só vez. Um com a saída dos comandos de cópia, outro com a data prefixada. Para fazer isso, você pode usar o comando tee
. Sem o comando tee
, a saída do comando find/cp
é redirecionada para outro arquivo de log e não é capturada pelo comando exec
. O comando tee
resolve isso:
exec &> >(while read line; do echo "$(date +'%h %d %Hh%Mm%Ss') $line" >> /tmp/LogsCopiaDBs.txt; done;)
find /tmp/ -type f -mtime -1 -exec echo cp -v -a --parents "{}" /tmp/ \; |tee -a /tmp/LogsCopiaDBs_$(date +%d-%m-%Y).txt