GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Dateien kopieren, die nach einem bestimmten Datum mit Cp-Schaltern geändert wurden?

Wenn ich den Befehl find . -mtime -60 Ich erhalte die Liste der Dateien, die in den letzten 60 Tagen geändert wurden.

Wenn ich also find . -mtime -60 -exec cp {} /tmp/1 \; Ich kann diese Dateien zur Verarbeitung in ein neues Verzeichnis kopieren

Wenn ich jedoch die Zeitstempel beibehalten möchte, kann ich nicht nur die Dateien kopieren, die beim Ausführen von find . -mtime -60 -exec cp -LR --preserve=timestamps {} /tmp/2 \;

Am Ende werden ALLE Dateien im Quellverzeichnis kopiert und nicht nur die Dateien, die ich brauche.

Gibt es hier eine Lösung?

Akzeptierte Antwort:

Was hier passiert, ist das, wenn Sie das -R verwenden Option zu cp und ein Verzeichnis als Argument angeben, kopiert es alles in diesem Verzeichnis. Außerdem wird dadurch die Verzeichnisstruktur nicht erhalten, da alle Dateien in niedrigeren Verzeichnissen direkt nach /tmp/2 kopiert werden . Dies kann das sein, was Sie wollen (siehe X Tians Antwort, wie es auf diese Weise gemacht wird), aber Vorsicht, wenn Dateien denselben Namen haben, wird eine die andere beim Ziel überschreiben.

Um die Verzeichnisstruktur beizubehalten, können Sie cpio verwenden :

find . -mtime -60 -print0 | cpio -0mdp /tmp/2

Wenn die -0 (oder gleichwertig) Option nicht verfügbar ist, können Sie dies tun, aber seien Sie vorsichtig, dass keiner Ihrer Dateinamen einen Zeilenumbruch enthält:

find . -mtime -2 | cpio -mdp /tmp/2

cpio sollte auch das -L unterstützen Option, aber seien Sie vorsichtig damit, da es in einigen Fällen zu einer Endlosschleife kommen kann.


Linux
  1. So extrahieren Sie Tar-Dateien in ein bestimmtes oder anderes Verzeichnis in Linux

  2. Ansible Guide:Verwalten Sie Dateien mit Ansible

  3. Erste N Dateien in ein anderes Verzeichnis kopieren?

  4. Binden Sie einen SFTP-Benutzer ein, nachdem Sie Chroot verwendet haben

  5. Zählen der Anzahl der Dateien in einem Verzeichnis mit C

So entfernen Sie Verzeichnisse und Dateien unter Linux

So kopieren Sie Dateien und Verzeichnisse unter Linux

So tarieren Sie bestimmte Dateitypen (Erweiterungen) in einem Verzeichnis

So kopieren Sie Dateien mit einer bestimmten Dateierweiterung rekursiv

So kopieren Sie Dateien unter Linux mit dem CP-Befehl

Wie stellt man bestimmte Dateien/Verzeichnisse mit JetBackup 5 wieder her?