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

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

Vídeo: Como copiar um arquivo para vários diretórios com um comando no Linux

Vídeo: Como copiar um arquivo para vários diretórios com um comando no Linux
Vídeo: Windows 10 não inicia - Solução de Problemas Resolvido - Recuperação do Sistema - YouTube 2024, Abril
Anonim
Copiar um arquivo com a linha de comando do Linux é fácil. No entanto, e se você quiser copiar o mesmo arquivo para vários locais diferentes? Isso também é fácil, e vamos mostrar como fazer isso com um único comando.
Copiar um arquivo com a linha de comando do Linux é fácil. No entanto, e se você quiser copiar o mesmo arquivo para vários locais diferentes? Isso também é fácil, e vamos mostrar como fazer isso com um único comando.

Normalmente, para copiar um arquivo, você usaria o

cp

comando, vinculando ao arquivo de origem e ao diretório de destino:

cp ~/Documents/FileToBeCopied.txt ~/TextFiles/

Para copiá-lo para mais dois diretórios, muitas pessoas simplesmente executariam o comando mais duas vezes, com diferentes destinos:

cp ~/Documents/FileToBeCopied.txt ~/Dropbox/

cp ~/Documents/FileToBeCopied.txt /media/lori/MYUSBDRIVE/

No entanto, podemos fazer a mesma tarefa com um comando:
No entanto, podemos fazer a mesma tarefa com um comando:

echo dir1 dir2 dir3 | xargs -n 1 cp file1

Veja como esse comando funciona. o

echo

comando normalmente escreve na tela. No entanto, neste caso, queremos alimentar a saída do

echo

comando como entrada para o

xargs

comando. Para fazer isso, usamos o símbolo pipe (

|

) que alimenta a saída de um comando como entrada para outro. o

xargs

comando irá executar o

cp

comando três vezes, cada vez anexando o próximo caminho de diretório canalizado para ele a partir do

echo

comando para o final do

cp

comando. Existem três argumentos sendo passados para

xargs

mas o

-n 1

opção no

xargs

comando diz para anexar apenas um desses argumentos de cada vez para o

cp

comando cada vez que é executado.

Então, para ficar com o nosso exemplo anterior, os três separam

cp

Os comandos acima podem ser combinados em um comando como este:

echo ~/TextFiles/ ~/Dropbox /media/lori/MYUSBDRIVE | xargs -n 1 cp ~/Documents/FileToBeCopied.txt

Observe que, se o arquivo que está sendo copiado existir em qualquer um dos diretórios de destino especificados, o arquivo nesse destino será substituído automaticamente. Você não será perguntado se deseja substituir o arquivo. (Normalmente, quando você usa o
Observe que, se o arquivo que está sendo copiado existir em qualquer um dos diretórios de destino especificados, o arquivo nesse destino será substituído automaticamente. Você não será perguntado se deseja substituir o arquivo. (Normalmente, quando você usa o

cp

comando para copiar um arquivo em um único local, você pode adicionar

-i

opção para perguntar se você deseja substituir um arquivo existente. No entanto, o

-i

opção é uma opção interativa (faz com que o

cp

comando para solicitar informações do usuário) e você não pode usar uma opção interativa com o

cp

comando ao usá-lo em conjunto com

xargs

.)

Uma outra coisa a considerar, é que se você está copiando um arquivo muito grande, você pode querer adicionar o no-clobber (

-n

) opção para o

cp

comando no comando único acima. Esta opção impede automaticamente que um arquivo seja sobrescrito em um destino, se já existir. Se você estiver copiando um arquivo muito grande em uma rede, pode ser lento e evite usar os recursos necessários para copiar e substituir o arquivo. O comando a seguir adiciona o

-n

opção, e não irá copiar o arquivo para qualquer destino listado nos argumentos para a declaração de eco, se o arquivo já existir nesse destino.

echo ~/TextFiles/ ~/Dropbox /media/lori/MYUSBDRIVE | xargs -n 1 cp -n ~/Documents/FileToBeCopied.txt

Recomendado: