Como copio uma pasta com arquivos para outra pasta no Unix / Linux? [fechadas]


1192

Estou com alguns problemas para copiar uma pasta com arquivos nessa pasta para outra pasta. O comando cp -rnão copia arquivos na pasta.




Eu gostaria que isso pudesse ser migrado para um SE, onde há mais tópicos.
JRH

6
A programação do Bash está no tópico .
X64xzr

Respostas:


1980

A opção que você está procurando é -R.

cp -R path_to_source path_to_destination/
  • Se destinationnão existir, será criado.
  • -Rmeios copy directories recursively. Você também pode usar, -rpois não diferencia maiúsculas de minúsculas.
  • Observe as nuances ao adicionar o final /conforme o comentário de @ muni764 .

5
Eu me pergunto por que esse comando exato no dockerfile copia todos os arquivos do diretório de origem no destino, em vez de copiar apenas o diretório inteiro.
21917 holms

4
Acredito que o '/' no final faz a diferença e isso pode explicar sua experiência. Se a fonte incluir a barra à direita, ela copiará o que está apenas no diretório. Se não incluir a barra à direita, ele também copiará o diretório e, em seguida, o conteúdo dentro dele. Minha memória é que esse comportamento varia de acordo com o comando e talvez com o evento do SO um pouco. Aqui está uma referência com mais informações.
OllieBrown

23
Eu diria que se você não deseja incluir a fonte e deseja garantir que tudo seja copiado (links simbólicos, arquivos ocultos) sem copiar a pasta pai de origem, use -ra source /. destino. Isso garantirá que o conteúdo da pasta seja copiado, mas não a própria pasta pai, o que às vezes é útil. E a diferença é o /.
muni764

Isso também parece funcionar corretamente se os diretórios a serem copiados forem links simbólicos, que foi o meu caso de uso.
Gdalya 12/09/18

3
Observe a importância do "Slash dot" na sua fonte, cp -r src/. desteu sei que é mencionado, mas ainda sinto falta dele o tempo todo.
bbeecher

368

Você está procurando o cpcomando Você precisa alterar os diretórios para ficar fora do diretório que está tentando copiar.

Se o diretório que você está copiando for chamado dir1e você desejar copiá-lo para sua /home/Picturespasta:

cp -r dir1/ ~/Pictures/

O Linux diferencia maiúsculas de minúsculas e também precisa de /cada diretório para saber que não é um arquivo. ~é um caractere especial no terminal que avalia automaticamente o diretório inicial do usuário atual. Se você precisa saber o diretório que você está, use o comando pwd.

Quando você não sabe como usar um comando Linux, há uma página de manual à qual você pode se referir digitando:

man [insert command here]

em um prompt do terminal.

Além disso, para concluir automaticamente caminhos longos de arquivos ao digitar no terminal, você pode pressionar Tabdepois de começar a digitar o caminho e será apresentado a você opções ou ele inserirá a parte restante do caminho.


6
Para esclarecer mais, a -ropção neste irá copiar diretórios recursivamente.
TVann

5
O OP não especificou que ele estava usando o cp -rcomando, mas que não estava funcionando corretamente?
MD XF

4
A razão pela qual incluí as informações sobre as páginas de manual é que esses sinalizadores podem depender da distribuição. No entanto, em sua maior parte, parece -r, --recursivee -Rsão equivalentes. Também dará armadilhas comuns, etc., o que é bom.
Alex W

6
Se você deseja copiar o DIRECTORY de maneira portável e não apenas o conteúdo, deixe o traço à direita na pasta de origem, por exemplo. cp -r dir1 ~/Pictures/
mehtunguh

105

Usar:

$ cp -R SRCFOLDER DESTFOLDER/

4
esta é a maneira que eu fiz isso e demo1_copyjá não existem$ ls demo1 demo3 README.md $ cp -R demo1/ demo1_copy/
HattrickNZ
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.