Copie d'un fichier uniquement lorsqu'il est plus récent que la destination


36

Comment copier un fichier sous Linux uniquement lorsque le fichier copié est plus récent que la version de destination?

Si le fichier à destination est plus récent, je souhaite que la copie du fichier ne se poursuive pas.

Réponses:



17

Utiliser rsync

rsync --progress -r -u /from/one/* /to/another/directory

3
Juste pour être complet: -rsignifie une opération récursive dans les sous-répertoires et -upour conserver les fichiers les plus récents à destination (= mise à jour). --progressaffiche les informations de progression pendant le fonctionnement.
Jörg Gottschlich

6

Vous ne dites pas quel shell vous utilisez, donc je vais supposer ksh:

if [[ file1 -nt file2 ]]; then cp file1 file2; fi

N'est-ce pas bash le plus courant?
Rob

1
@Rob, oui. Cela fonctionne aussi en bash, évidemment. Je n'avais tout simplement pas bash (ou toute boîte Linux standard) à portée de main quand je l'ai écrit.
Kusalananda

4

yes|cp -ruv /from/* /to/.
oui - Répondez oui à toutes les questions.
r -
U récursif - mise à jour
v - Progression

fonctionne comme xargs .

Je ne sais pas comment l'expliquer académiquement.

Comment forcer cp à écraser sans confirmation


1
C'est un peu cryptique. Pouvez-vous développer votre réponse pour être un peu plus explicite, peut-être inclure un exemple? Merci. de l'avis
fixer1234

oui -> Répondez oui à toutes les questions.
Felippe Silvestre
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.