Pesquisa de site

Como copiar um arquivo para vários diretórios no Linux


Ao aprender Linux, é sempre normal que os novatos continuem digitando vários comandos para realizar uma tarefa simples. Isso é compreensível especialmente quando alguém está apenas se acostumando a usar o terminal.

No entanto, como você deseja se tornar um usuário avançado do Linux, aprender o que eu chamaria de “comandos de atalho” pode reduzir significativamente as tendências de perda de tempo.

Neste artigo, explicaremos uma maneira fácil, usando um único comando, para copiar um arquivo em vários diretórios no Linux.

No Linux, o comando cp é usado para copiar arquivos de um diretório para outro, a sintaxe mais fácil de usá-lo é a seguinte:

cp [options….] source(s) destination

Alternativamente, você também pode usar o comando advanced-copy, que mostra uma barra de progresso ao copiar arquivos/pastas grandes no Linux.

Considere os comandos abaixo, normalmente você digitaria dois comandos diferentes para copiar o mesmo arquivo em dois diretórios separados, como segue:

cp -v /home/aaronkilik/bin/sys_info.sh /home/aaronkilik/test
cp -v /home/aaronkilik/bin/sys_info.sh /home/aaronkilik/tmp

Supondo que você queira copiar um arquivo específico em até cinco ou mais diretórios, isso significa que você teria que digitar cinco ou mais comandos cp?

Para acabar com esse problema, você pode empregar o comando echo, um comando pipe, xargs junto com o comando cp no formato abaixo:

echo /home/aaronkilik/test/ /home/aaronkilik/tmp | xargs -n 1 cp -v /home/aaronkilik/bin/sys_info.sh

No formulário acima, os caminhos para os diretórios (dir1,dir2,dir3…..dirN) são ecoados e canalizados como entrada para o comando xargs onde:

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

Tente ler as páginas de manual dos comandos cp, echo e xargs para encontrar informações de uso úteis e avançadas:

man cp
man echo
man xargs

Só isso, você pode nos enviar dúvidas em relação ao tema ou qualquer feedback através do formulário de comentários abaixo. Você também pode querer ler sobre o comando progress que ajuda a monitorar o progresso de (cp, mv, dd, tar, etc.) comandos que estão atualmente em execução no Linux.