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 cd
into /usr
, isso ocorre porque quando você usa um caminho absoluto (como /usr
) com find
eu 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 find
não foi possível executar o comando no ./share/doc/google-chrome-stable
diretó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