Du hast fast recht. -mtime 365
Alle Dateien, die genau 365 Tage alt sind. Sie möchten diejenigen, die 365 Tage alt oder älter sind, was bedeutet, dass Sie +
vor der Zahl eine hinzufügen -mtime +365
.
Möglicherweise interessiert Sie auch die -maxdepth 1
Markierung, die das Verschieben von Elementen in Unterverzeichnissen verhindert.
Wenn Sie sicherstellen möchten, dass Sie nur Dateien und keine Verzeichnisse verschieben, fügen Sie diese -type f
in die Zeile ein.
Am Ende der Zeile fügen wir hinzu, \;
damit Sie find
wissen, dass dies das Ende des Befehls ist, den wir ausführen.
Die Zeile sollte also lauten:
find /sourcedirectory -maxdepth 1 -mtime +365 -type f -exec mv "{}" /destination/directory/ \;
Um auf der sicheren Seite zu sein, führen Sie einfach ein ls -l anstelle von mv aus. Auf diese Weise können Sie im Voraus überprüfen, ob Sie genau die gewünschten Dateien erhalten, bevor Sie sie mit mv erneut ausführen:
find /sourcedirectory -maxdepth 1 -mtime +365 -type f -exec ls -l {} \;
Jenny D sagt Reinstate Monica
quelle
mtime
die Änderungszeit ist (was sich wie das anhört, was Sie wahrscheinlich wollen - meistens ist es dies). Wenn diese Protokolle häufig gelesen / referenziert werden, können Sie sie verwenden-atime
(letzte Zugriffszeit).exec
Anweisung. Siehe die Manpage fürfind
.Seien Sie vorsichtig bei der Verwendung der oben genannten Lösungen, ich habe sie verwendet und am Ende alle Dateien in allen Unterordnern verschoben !!!!
Dieser Befehl verschiebt alle Dateien im Verzeichnis / source und alle Unterordner im Quellverzeichnis:
Verwenden Sie stattdessen die Option -maxdepth 1 nur für Dateien in / sourcedirectory
quelle
-type f
. Meinten Sie dies stattdessen, um zu bedeuten, dass die Unterordner zwar verschoben werden, der Inhalt jedoch in den Unterordnern verbleibt, anstatt aus diesen verschoben zu werden, oder ...?Sie können diesen Befehl verwenden und angeben, dass Sie nur nach Dateien suchen, nicht nach Verzeichnissen, und die Datei älter als ein Jahr ist
quelle
rm
? Ihr Befehl löscht sowohl die Protokolldateien als auch möglicherweise das Zielverzeichnis.Sie können den folgenden Befehl mit atime verwenden, wenn häufig auf die Dateien zugegriffen wird
quelle
Richtig wäre, den abschließenden Schrägstrich von zu entfernen
/sourcedirectory/
quelle
find: missing argument
Fehler nicht replizieren , stimme jedoch zu, dass das Löschen des abschließenden Schrägstrichs/sourcedirectory
korrekt ist.