Como procurar um arquivo e ir para vários diretórios de destino?

1

Como pesquisar um único arquivo e passar para várias pastas usando o comando find?

Eu tentei abaixo do comando, mas sem sorte.

find /export/logs/tmp/logs/* -type f -name f_apec_'echo $(date  +"%Y-%m-%d")'_1 -exec mv -v {} /export/logs/nucleus1/ /export/logs/nucleus2/ \;
    
por Nirmal 02.08.2017 / 17:03

2 respostas

1

Você não pode mover um arquivo para vários diretórios, mas pode copiá-lo para todos os destinos e para o último movimento usando seu próprio comando.

find /export/logs/tmp/logs/ -type f -name "f_apec_$(date +"%Y-%m-%d")_1" -exec echo cp -v '{}' /export/logs/nucleus1/ \; -exec echo mv -v '{}' /export/logs/nucleus2/ \;

Aqui também você pode copiar um arquivo para vários diretórios usando xargs :

echo dir1/ dir2/ dir3/ | xargs -n1 cp /path/to/Onefile
    
por 02.08.2017 / 17:20
0

Primeiro, você está usando mv , que move um arquivo e não o copia. Você precisa usar cp , mas cp pode copiar vários arquivos para um único destino.

Você precisará executar cp várias vezes. Uma solução que você pode usar é criar um script simples que copie o argumento para vários destinos. Em seguida, no seu comando find .. -exec {} , execute o script com o arquivo como um argumento e copie-o várias vezes dentro do script.

    
por 02.08.2017 / 17:12

Tags