2013-01-13 7 views
5

Sembra un comando molto semplice. Tuttavia, anche dopo un'ora di ricerca della soluzione, non riesco ancora a trovare qualcosa che funzioni.MAC: Come unire la cartella in modo tale da sovrascrivere solo quando i file di origine sono più recenti dei file di destinazione?

Quindi ho due grandi cartelle (con molti file e molte sottocartelle, il mega back-up). Mi piacerebbe combinare queste due cartelle in una cartella che contiene solo i file più recenti. Quindi sto cercando un modo per sovrascrivere i file SE SOLO il file sorgente è più recente del file di destinazione, o quando il file di destinazione non esiste.

Sono in esecuzione Mac versione 10.7.4. Sono aperto all'installazione di nuove applicazioni e/o utilizzando il comando terminal/bash.

+0

OS X 10.8 Mountain Lion esegue automaticamente tramite la GUI . –

risposta

13

Nei sistemi Gnu, utilizzare mv -u SOURCE DEST o cp -u SOURCE DEST per spostare o copiare solo quando il file SOURCE è più recente del file DEST o quando il file di destinazione è mancante.

Nota che in OS X, mv e cp non supportano l'opzione -u. Tuttavia, rsync ha un'opzione -u ed è supportato su OS X. Per esempio:

rsync -aru SOURCE/ DEST 

eseguire alcuni test in directory scratch prima di applicarlo alle grandi ed importanti directory, perché (IMO) rsync è idiosincratica per quanto riguarda se directory i nomi terminano con o senza /. Parte della pagina man di Linux dice:

Una barra finale sull'origine modifica questo comportamento per evitare di creare un ulteriore livello di directory nella destinazione. Si può pensare a una traccia/su una sorgente come "copia il contenuto di questa directory" anziché "copia la directory per nome", ...

+0

Se sto leggendo correttamente i documenti, -r è implicitamente parte dell'opzione -a (archivio). Quindi -au è lo stesso di -aru. Puoi totalmente risparmiare scrivendo una lettera! =) –

+0

@ChrisDragon, sembra che tu abbia ragione ... Avrei dovuto notare che * r * è ridondante in * -aru * –

Problemi correlati