Depois de enviar esta pergunta, percebi que esqueci de proteger as {} variáveis com aspas! Agora funciona corretamente. Desculpe se você perdeu tempo lendo isto.
//// RESOLVIDO ////
Estou tentando copiar vários arquivos espalhados em uma estrutura de diretórios para outra onde esses arquivos já existem, mas sem permissão de gravação permitida. Então eu usei um comando find com duas opções -exec ( -ok , aqui, apenas para depuração), o primeiro para o Comando chmod e o segundo para o comando cp com duas referências a {}.
Acho que o problema é como unir o caminho da raiz de destino à variável {}. Eu tentei outras maneiras de entrar nesses caminhos sem sair.
Eu sei que posso fazê-lo com outras ferramentas (sed, awk, perl, bash script, enviar os resultados da busca para um arquivo e processá-lo em uma segunda etapa, ...) mas achei que este foi o mais simples.
Você sabe se existe alguma maneira de fazê-lo funcionar? Agradecemos antecipadamente.
$ cd ~/sourceBranch/
$ find . \( -name '*.h*' -o -name '*.c*' \) -a -ctime -1 -ok chmod -v u+w /tmp/destBranch/{} \; -ok cp -uv {} /tmp/destBranch/{} \;
No entanto, recebo esta saída (mostrada apenas para o primeiro arquivo encontrado):
< chmod ... ./Node/Db/UtilCLib/src/Constants.cc > ? yes
mode of '/tmp/destBranch/' retained as 0755 (rwxr-xr-x) <--- wrong path
< cp ... ./Node/Db/UtilCLib/src/Constants.cc > ? y
'./Node/Db/UtilCLib/src/Constants.cc' -> '/tmp/destBranch/Constants.cc' <--- wrong path
Depois de enviar esta pergunta, percebi que esqueci de proteger as {} variáveis com aspas! Agora funciona corretamente. Desculpe se você perdeu tempo lendo isto.