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.

user2080656
fonte
3
Relacionado: Como copiar uma pasta da linha de comando do Linux? em SU
kenorb 27/05
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 .
Pierre Salagnac
fonte
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.

Alex W
fonte
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/
cIph3r
fonte
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