Internet, Informática e Tecnologia

Copie arquivos e pastas do terminal com CP no Linux

Copiar archivos linux

O console ou terminal do Linux é uma ferramenta muito poderosa, se você souber como funciona e como usá-la. Um grande problema para todos os iniciantes é conhecer os comandos básicos, um comando muito básico que todos devemos conhecer é o comando que nos permite copiar arquivos do terminal, e é tão simples que não é necessário anotá-lo.

Copiar arquivos

O comando que usaremos é cp. O formato que utilizaremos é o nome do comando, seguido de um espaço e o caminho absoluto ou relativo do arquivo-fonte a ser copiado, e outro espaço seguido do caminho completo do diretório onde o novo arquivo será copiado, inclusive o nome que terá isso, que pode ser diferente do arquivo-fonte.

Agora no terminal:

cp /tmp/arquivo-antigo.bin /root/novo-arquivo.bin

Com este pequeno trecho de código, um arquivo é copiado para outro local, a única desvantagem é que temos que ajustar as permissões após copiá-lo, a menos que queiramos para o mesmo usuário "root".

Copie arquivos e pastas recursivamente

Para copiar todo o conteúdo da pasta de origem para a pasta de destino usamos o parâmetro -R.

cp -R /tmp/pasta-fonte /root/pasta-de-destino

Usando caractere curinga para copiar e copiar recursivamente

Às vezes, precisamos copiar arquivos com base em sua extensão ou nome de arquivo, portanto, é melhor usar curingas.

Se precisarmos copiar arquivos de primeiro nível ou recursivamente da pasta atual com extensão .js.

Simples, só o primeiro nível:

cp *.js /home/usuário/destino/

Recursivo, todos os arquivos com a extensão anterior são copiados para o nível superior e para todas as pastas internas:

cp -R *.js /home/usuário/destino/

Lista de caractere curinga úteis:

  • * refere-se a todo o conteúdo do diretório, incluindo outros diretórios; não seleciona arquivos e pastas ocultos.
  • . refere-se à pasta atual.
  • .* refere-se a todos os arquivos e pastas, inclusive os ocultos.
  • *.* refere-se a todos os arquivos que usam o formato nome.extensão.

Copie o conteúdo da pasta atual para outra pasta recursivamente

Se estivermos em uma pasta e quisermos copiar todos os arquivos recursivamente para outra pasta, usamos o curinga . e o parâmetro -R.

cp -R . /root/diretório/

Para que o comando anterior funcione devemos nos colocar no diretório que contém o conteúdo que queremos copiar com cd.

Por exemplo, cd /root/conteudo/, e a partir daí execute o comando que irá copiar todo o conteúdo da pasta, mas sem copiar a pasta pai.

Copiar com caminhos relativos

Normalmente, quando copiamos arquivos e pastas o fazemos com caminhos absolutos, ou seja, caminhos completos, mas também podemos usar caminhos relativos ao diretório em que estamos. Existem casos especiais em que isso é necessário, por exemplo, se baixamos um arquivo zip e o descompactamos em um diretório, mas seu conteúdo foi salvo em um diretório chamado directory-123-downloaded, que tem o mesmo nome do arquivo zip, diretório-123-downloaded.zip, então precisamos que todo o conteúdo do diretório seja copiado um diretório de volta.

Caminhos relativos no Linux são tratados com dois pontos seguidos de .. para indicar um nível acima e não devem começar com uma diagonal. Pode ser o caso de utilizar os dois pontos com rotas absolutas, mas isso é outro assunto. Um único ponto após a barra indica que o conteúdo dessa pasta será usado e não a pasta em si. Por outro lado, podemos substituir os dois pontos pelo curinga * para aumentar os níveis.

Exemplo para copiar recursivamente um nível atrás e apenas o conteúdo do diretório:

cp diretório/. ../

Parece um pouco estranho, mas é bastante simples e prático, você pode até combinar os dois pontos com vários níveis, por exemplo:

cp diretório/. ../../../../

Só não recomendo porque é chato ter que contar os níveis e calcular as posições. Mas para situações simples em que apenas um ou dois níveis de diferença são tratados, não deverá haver problema.

Exemplo para copiar recursivamente um nível para trás e dois níveis para frente com curingas e apenas o conteúdo do diretório:

cp diretório/. ../nova-rota-incompl*/dire*o/

Como podemos ver, podemos completar os caminhos com curingas, uma das situações que mais nos ajuda é quando temos uma pasta com o nome de um projeto seguido de sua versão e não sabemos a versão, por exemplo, php-7.*.

Categorías
Etiquetas

Conteúdo semelhante