Como encontrar arquivos e copiar para a pasta não existente em um comando?

2

Por exemplo:

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

Funciona bem no caso de termos txts de diretório existentes.

Tanto quanto eu posso entender - cp não tem sinalizadores para resolver este caso. Talvez eu deva usar rsync ou outra coisa?

    
por Vlad 02.09.2016 / 12:46

1 resposta

2

Boa pergunta, você poderia tentar isso:
Primeiro cd into /usr , isso porque, quando você usa um caminho absoluto (como /usr ) com find , suspeito que isso fará com que {} contenha caminhos completos.

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

Quando executo este comando, recebo a seguinte mensagem de erro:

  

localizar: "./share/doc/google-chrome-stable": permissão negada

A mensagem de erro não significa que a operação falhou no geral, apenas significa que find não pôde executar o comando no diretório ./share/doc/google-chrome-stable .
Mas para mim todos os outros arquivos e seus caminhos foram copiados e os caminhos do diretório foram criados conforme necessário.

após investigação adicional, 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
    
por the_velour_fog 02.09.2016 / 14:12