Come sostituire tutto il contenuto da una cartella con un'altra


23

Ho cartelle olde new.

Voglio sostituire tutti i contenuti in old/*a new/*. Ci possono essere molte sottodirectory in quelle cartelle.

Ma ci possono essere pochi file che non sono presenti new/*ma sono presenti old/*, quindi voglio che rimangano come sono.

Come posso farlo da una shell Linux?

Risposte:


18

rsync sarebbe probabilmente un'opzione migliore qui. È semplice come rsync -a subdir / ./. controlla questa risposta unix.stackexchage per soluzioni migliori

utilizzare -fcon il cpcomando

cp -fR /source/files /dest

sopprimere cp per sovrascrivere il prompt ".

Per sovrascrivere l'alias di cp puoi semplicemente racchiuderlo tra virgolette:

 'cp' -rf ./source/* /destination/

per maggiori informazioni segui questi link:

http://www.wallpaperama.com/forums/cp-command-problems-forcing-overwrite-using-cp-command-t5685.html

http://bytes.com/topic/unix/answers/865372-force-cp-overwrite-existing-directory


23

Usa rsync. Sincronizzerà le directory in una direzione. Quindi, se vuoi aggiornare la tua oldcartella con qualsiasi cosa new, ma tieni ciò che è lì dentro, usa semplicemente:

rsync -avh --dry-run /path/to/new/ /path/to/old/

Questo, in primo luogo, produrrà semplicemente l'elenco dei file che verrebbero trasferiti. In tal caso: tutto il contenuto trovato newverrà copiato old, a meno che non sia già presente. Tutto oldrimane come è.

Se ti sembra giusto, rimuovi l' --dry-runargomento per trasmetterli sul serio.

I -avhflag abilitano solo la modalità di archiviazione (che conserverà i timestamp, ecc.), La verbosità e le dimensioni dei file leggibili dall'uomo. Nulla verrà eliminato dalla destinazione se non si specifica la --deletebandiera. Consultare man rsyncper ulteriori informazioni.

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.