como unir caminhos a {} dentro de uma opção -exec de um comando find?

1

//// 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
    
por Yandot 21.11.2012 / 12:57

1 resposta

1

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.

    
por 23.11.2012 / 19:22

Tags