Como encontrar arquivos e copiá-los para uma pasta não existente em um comando?

Como encontrar arquivos e copiá-los para uma pasta não existente em um comando?

Por exemplo:

find /usr -type f -name "*.txt" -exec cp -r {} ~/txts/ \;

Funciona bem caso tenhamos txts de diretório existentes.

Pelo que eu posso entender -cp não tem sinalizadorespara resolver este caso. Talvez eu deva usar o rsync ou algo mais?

Responder1

Boa pergunta, você poderia tentar isto:
Primeiro cdinto /usr, isso ocorre porque quando você usa um caminho absoluto (como /usr) com findeu suspeito que ele {}conterá caminhos completos.

find . -type f -a -name "*.txt" -a -exec install -D {} ~/texts/{} \;

Ao executar este comando, recebi a seguinte mensagem de erro:

encontrar: './share/doc/google-chrome-stable': Permissão negada

A mensagem de erro não significa que a operação falhou em geral, apenas significa que findnão foi possível executar o comando no ./share/doc/google-chrome-stablediretório.
Mas para mim todos os outros arquivos e seus caminhos foram copiados e os caminhos dos diretórios foram criados conforme necessário.

após uma investigação mais aprofundada, a causa do erro foi

% ls -al --directory ./share/doc/google-chrome-stable 
drwx------ 2 root root 4096 Aug 21 12:45 ./share/doc/google-chrome-stable

informação relacionada