Come posso copiare il contenuto di una cartella in un'altra cartella in una directory diversa usando il terminale?


740

Sto cercando di copiare il contenuto di una cartella in un'altra cartella in una directory diversa usando il terminale.

Qualcuno sarebbe in grado di fornirmi un esempio della sintassi della riga di comando richiesta per raggiungere questo obiettivo?

Risposte:


1116

È possibile copiare il contenuto di una cartella /sourcein un'altra cartella esistente /destcon il comando

cp -a /source/. /dest/

L' -aopzione è un'opzione ricorsiva migliorata, che conserva tutti gli attributi di file e conserva anche i collegamenti simbolici.

Alla .fine del percorso di origine è una cpsintassi specifica che consente di copiare tutti i file e le cartelle, inclusi quelli nascosti.


@enzotib Sto provando a usare questo comando per copiare il contenuto di "Download / textext" su "~ / .config / inkscape / extensions /." Usando il tuo comando, digito "cp -a / Downloads / textext /. /~/.config/inkscape/extensions/." ma questo non funziona
Funzies

@Funzies: probabilmente il tuo comando dovrebbe essere:cp -a ~/Downloads/textext/. ~/.config/inkscape/extensions/
enzotib

Aggiungi -pflag as per preservare i permessi dei file e i timestamp. cp -ap /var/www/original.com/images/. /var/www/new.com/images/
Dylan Valade,

3
@DylanValade: -aimplica già --preserve=all, che è più ampio di -p = --preserve=mode,ownership,timestamps.
enzotib,

1
@BennyNeugebauer: scpè usato per copiare su una rete (attraverso ssh) e crittografa solo il canale di comunicazione, non i file sul filesystem di destinazione.
enzotib,

129

Un sostituto è rsync

rsync -r source/ destination

I vantaggi di rsync sono:

  1. Dopo la sincronizzazione iniziale, copierà solo i file che sono stati modificati.

  2. Puoi usarlo su una rete, comodo per i file in $ HOME, in particolare i file di configurazione.


5
Penso che non ti serva l'asterisco. rsync -r source/ destinationdovrebbe essere abbastanza, no?
Joschua,

1
Questo è più appropriato: 'rsync -rtvp source / * destination'
shridutt kothari

-r non funziona per file / cartelle nascosti
Nam G VU

1
Questo non copierà i file nascosti, poiché bash si espande * solo in file non nascosto. La soluzione di @Joschua è più sicura.
Sauerburger

rsync copierà l'intera directory, inclusi i file nascosti, se usi il trailing / senza un *, quindi rync source/ destovviamente le persone dovranno personalizzare il comando rsync per funzionare come vogliono.
Pantera

78

Diciamo che avere una cartella denominata folder1 nella vostra ~, all'interno cartella1 è 1 file denominato file1 e 2 cartelle chiamato sub1 e sub2 ciascuno con altri file e cartelle al loro interno.

Per copiare tutti i contenuti di ~/folder1per ~/new_folder1si usa

cp -r ~/folder1/. ~/new_folder1

new_folder1conterrà quindi tutti i file e le cartelle da folder1.

cpè il comando da copiare usando un terminale, lo -rrende ricorsivamente (quindi, directory corrente + ulteriori directory all'interno di corrente) ~/folder1è la cartella di origine, ~/new_folder1è la cartella di destinazione per i file / cartelle all'interno dell'origine.


5
non rileva i file nascosti
Portablejim

1
Grazie Bruno! Mi ha aiutato a capire la sintassi, anche se ho dovuto cambiarla un po '(rimuovendo il segno ~). Forse perché la cartella di destinazione era in / opt, che risiede in un altro file system. E grazie Portablejim per ricordare la cosa del file nascosto!
Pandisvezia,

4
Il periodo finale è importante. Senza di essa, a volte può creare una nuova sottodirectory ~/new_folder1/folder1invece di copiarne il contenuto.
Wisbucky

1
Perché nocp -r ~/folder1/* ~/new_folder1
Alex78191,

@ Alex78191[root@ home]# mkdir food [root@ home]# cd food/ [root@ food]# mkdir .fruit [root@ food]# mkdir veggies [root@ food]# touch veggies/carrots [root@ food]# touch .fruit/apple [root@ food]# ls * carrots [root@ food]#
Bruno Pereira,

14

Controlla questo http://www.cyberciti.biz/faq/copy-folder-linux-command-line/ per maggiori informazioni sulla copia della cartella. Spero che sia di aiuto.

cp Command

cpè un comando Linux per la copia di file e directory. La sintassi è la seguente:

cp source destination
cp dir1 dir2
cp -option  source destination
cp -option1 -option2  source destination

In questo esempio copia la /home/vivek/letterscartella e tutti i suoi file nella /usb/backupdirectory:

cp -avr /home/vivek/letters /usb/backup

Dove,

-a : Conserva gli attributi specificati come directory come modalità file, proprietà, timestamp, se possibile attributi aggiuntivi: contesto, collegamenti, xattr, tutti.

-v : Spiega cosa si sta facendo.

-r: Copia le directory in modo ricorsivo. Esempio

Copia una cartella chiamata / tmp / conf in / tmp / backup:

$ cp -avr /tmp/conf/ /tmp/backup

3
Non è questa la domanda.
Dopo l'

(L'uso di -r con -a è ridondante; su gnu cp -a è lo stesso di "-dr --preserve = all")
cristoper

1
cp: le opzioni -R e -r potrebbero non essere specificate insieme.
IgorGanapolsky,

4

Semplice esempio.

Copia la directory dir_1 e il suo contenuto (_files_) nella directory dir_2 :

cp -r ./dir_1 ./dir_2
# or
cp -r ./dir_1/ ./dir_2/
# Results in: ./dir_2/dir_1/_files_

Copia il contenuto (_files_) solo di dir_1 nella directory dir_2 :

cp -r ./dir_1/. ./dir_2
# or
cp -r ./dir_1/. ./dir_2/
# Results in: ./dir_2/_files_*

_files_ è un segnaposto per i file effettivi presenti nella directory.


2

Se ci sono due cartelle: (con permesso di scrittura)

drwxr-xr-x 4 vimal vimal  4096 Sep  9 12:17 .
drwxr-xr-x 3 root  root   4096 Aug 18 14:35 ..
drwxrwxrwx 6 vimal vimal  4096 Sep  9 12:15 DATA
drwxrwxrwx 7 vimal vimal  4096 Sep  9 12:15 PORTAL

Se ti trovi all'interno della cartella denominata PORTALE dove vuoi copiare tutto il contenuto di un'altra cartella, dì DATI allo stesso livello, quindi lo farai

vimal@vimal-D3H:/var/www/html/PORTAL$ cp -a ../DATA/. .

Devi notare 2 punti. L'ultimo punto dice copia qui nella cartella attuale

e

uno seguente / DATI /. dice che tutti i CONTENUTI all'interno della cartella DATA devono essere copiati e non la cartella DATA stessa.

Se rimuovi questo finale "." da / DATA /

quindi l'intera cartella DATA verrà copiata all'interno di PORTAL (da dove stai copiando).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.