Kopieren einer Datei nur, wenn sie neuer als das Ziel ist


36

Wie kopiere ich eine Datei unter Linux nur, wenn die zu kopierende Datei neuer ist als die Version am Ziel?

Wenn die Datei am Zielort neuer ist, soll die Dateikopie nicht fortgesetzt werden.

Antworten:



17

Verwenden Sie rsync

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

3
Nur der Vollständigkeit -rhalber : bedeutet rekursives Ablegen in Unterverzeichnisse und -uAufbewahren neuerer Dateien am Zielort (= Update). --progressZeigt Fortschrittsinformationen während des Betriebs an.
Jörg Gottschlich

6

Sie sagen nicht, welche Shell Sie verwenden, also gehe ich davon aus ksh:

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

Ist bash nicht am häufigsten?
Rob

1
@ Rob, ja. Dies funktioniert natürlich auch in Bash. Ich hatte gerade kein Bash (oder keine Standard-Linux-Box) zur Hand, als ich es schrieb.
Kusalananda

4

yes|cp -ruv /from/* /to/.
yes - Beantworten Sie alle Fragen mit yes.
r - Rekursives
u - Update
v - Fortschritt

funktioniert wie xargs .

Ich weiß nicht, wie ich es akademisch erklären soll.

So erzwingen Sie das Überschreiben von cp ohne Bestätigung


1
Das ist irgendwie kryptisch. Können Sie Ihre Antwort etwas präziser formulieren, vielleicht ein Beispiel hinzufügen? Vielen Dank. Aus Bewertung
fixer1234

Ja -> Beantworten Sie alle Fragen mit Ja.
Felippe Silvestre
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.