Wenn ich den Befehl ausführe find . -mtime -60
, wird die Liste der Dateien angezeigt, die in den letzten 60 Tagen geändert wurden.
Wenn ich sie ausführe, find . -mtime -60 -exec cp {} /tmp/1 \;
kann ich 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 bei der Ausführung benötigt werden 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 benötige.
Irgendeine Lösung hier?
find
cp
timestamps
cyberjar09
quelle
quelle
Antworten:
Wenn Sie die
-R
Option verwendencp
und ein Verzeichnis als Argument angeben, wird alles in diesem Verzeichnis kopiert . Darüber hinaus wird die Verzeichnisstruktur nicht beibehalten, da Dateien in niedrigeren Verzeichnissen direkt in kopiert werden/tmp/2
. 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, überschreibt eine die andere bei der Ermittlung.Um die Verzeichnisstruktur beizubehalten, können Sie Folgendes verwenden
cpio
:Wenn die
-0
(oder eine gleichwertige) Option nicht verfügbar ist, können Sie dies tun. Achten Sie jedoch darauf, dass keiner Ihrer Dateinamen eine neue Zeile enthält:cpio
sollte auch die-L
Option unterstützen, sei jedoch vorsichtig, da dies in einigen Fällen zu einer Endlosschleife führen kann.quelle
Sie sollten Verzeichnisse ausschließen. Bei der ersten Dateisuche werden
.
zusätzlich die rekursive Option für die Kopie verwendet.Das Folgende ist also mehr das, was Sie beabsichtigt haben, aber wie Graeme betont,
cpio -pdm
wird die ursprüngliche Verzeichnisstruktur beibehalten undcp
nur in das Zielverzeichnis kopiert.Ich lasse diese Antwort, um den Unterschied zwischen Graeme und dieser Lösung hervorzuheben. Da ich denke, dass es etwas zur allgemeinen Antwort auf die ursprüngliche Frage beiträgt. Andere Leser könnten dies interessant finden.
quelle
+
statt\;
als das, was Sie wird man berufen tuncp
pro Datei, ist dies nicht notwendig. Dies behält auch nicht die Verzeichnisstruktur bei und kann dazu führen, dass sich einige Dateien gegenseitig überschreiben, wenn sie denselben Namen haben.Dadurch bleiben Zeitstempel in allen Verzeichnissen und Dateien erhalten:
Getestet mit CentOS 7.2.
quelle