Wie kann ich eine Datei in einen anderen Ordner verschieben, allerdings nur, wenn sie seit 10 Minuten nicht geändert wurde?

Wie kann ich eine Datei in einen anderen Ordner verschieben, allerdings nur, wenn sie seit 10 Minuten nicht geändert wurde?

Ersetzen Sie die „10 Minuten“ durch einen beliebigen Wert. Grundsätzlich möchte ich die Datei nur verschieben, wenn sie nicht mehr wächst. Wie kann ich dies über die Befehlszeile oder ein Bash-Skript tun?

Bevorzugt wird eine Lösung, die einfach umzusetzen ist cron.


Einzelheiten:

  • Betriebssystem: CentOS
  • Was ich bisher versucht habe: nichts, weil ich nicht weiß, wo ich überhaupt anfangen soll
  • Welche Art von Dateien: alle Dateien in einem Verzeichnis

Antwort1

Einzeiliger Befehl hier:

find /path/to/dir1 -type f ! -mmin -10 -exec mv {} /path/to/dir2 \;

Ersetzen Sie es -10durch alles, was Sie möchten. Die Regel lautet:

+n     for greater than n,
-n     for less than n,
n      for exactly n.

Antwort2

Es gibt viele Wege.

Verwenden von „find“:

if find some_directory -mmin +10 | grep "^filename$" ; then
    mv filename somewhere_else
fi

Eine andere Möglichkeit wäre, die MD5-Summe zu berechnen und diese zu vergleichen

touch .filename.md5

prev_md5=$(cat .filename.md5)
new_md5=$(md5sum filename)

if [ "$prev_md5" = "$new_md5" ] ; then
    mv filename somewhere_else
fi
echo "$new_md5" > .filename.md5

und führen Sie das alle 10 Minuten aus.

verwandte Informationen