Algo simples, mas você já deve ter se deparado com a situação… como copiar um único arquivo para múltiplos diretórios, simultaneamente? O caminho mais rápido e prático é realizar essa operação pelo terminal de comandos do Linux, pois com “comandos de atalhos” você reduz, significativamente, o tempo na realização das tarefas. Sendo assim, conheça a maneira mais fácil para, usando um único comando, copiar um arquivo para vários diretórios, simultaneamente, no Linux.

O comando mais usado para copiar arquivos é o ‘cp’. A maneira mais simples para usá-lo é:

cp [params] origem(ns) destino

Partindo da sintaxe básica do comando cp, para copiar um único arquivo para múltiplos diretórios, simultaneamente, será preciso executar um comando para cada diretório destino diferente:

cp /home/ricardo/arquivos/arquivo.txt /home/ricardo/arquivos/dir1
cp /home/ricardo/arquivos/arquivo.txt /home/ricardo/arquivos/dir2
cp /home/ricardo/arquivos/arquivo.txt /home/ricardo/arquivos/dir3

Agora, imagine se fossem 10 ou mais destinos (diretórios) diferentes?! 🙁 Significa que você teria que digitar 10 ou mais vezes o comando cp!

Copiar um único arquivo para múltiplos diretórios simultaneamente

Para acabar com esse problema, você pode usar um conjunto de outros comandos que aliado ao comando cp tornam possível essa façanha 😉 Aliando o comando echo, um pipe, comando xargs junto com o comando cp resolve o problema:

echo /home/ricardo/arquivos/dir1 /home/ricardo/arquivos/dir2 /home/ricardo/arquivos/dir3 | xargs -n 1 cp -v /home/ricardo/arquivos/arquivo.txt

Onde, os caminhos para os diretórios (dir1, dir2, dir3 … ..dirN) são passados como entradas para o comando xargs que usa os parâmetros:

-n 1 – diz ao xargs para usar no máximo um argumento por linha de comando e enviar para o comando cp.
cp – usado para copiar um arquivo.
-v – permite mostrar os detalhes da operação de cópia.

Para saber mais sobre cada comando:

Publicidade
man cp
man echo
man xargs

Via | Tecmint