Sie können den Zeitpunkt der letzten Änderung einer Datei mit stat
und das aktuelle Datum mit date
ermitteln. Sie können Formatstrings für beide verwenden, um sie in "Sekunden seit der Epoche" zu erhalten:
Dann ist es ziemlich einfach, das in einen Zustand zu versetzen. Zum Beispiel:
%Vor%Die Syntax dieser if-Anweisung hängt von Ihrer speziellen Shell ab, aber die Datumsbefehle nicht. Ich benutze Bash; ändern Sie wie nötig.
%Vor% Das +%s
teilt dem Datum mit, dass es eine UNIX-Zeit ausgeben soll (das wichtige Bit ist, dass es eine ganze Zahl in Sekunden ist). Sie können stat auch verwenden, um diese Informationen zu erhalten - der Befehl stat -c %Y <file>
ist äquivalent. Stellen Sie sicher, dass %Y
nicht %y
verwendet wird, damit Sie eine verwendbare Zeit in Sekunden erhalten.
Find kann den Dateinamen ausgeben, wenn er in den letzten 3 Minuten geändert wurde.
%Vor% Eine Änderung des Dateizeitstempels bedeutet nicht, dass Sie erfolgreich kopiert wurden.
Wenn Sie die Datei korrumpieren oder das Dateisystem nicht mehr genügend Speicherplatz hat,
Sie werden wahrscheinlich immer noch einen Zeitstempel sehen (müssen dies bestätigen).
Ich bekomme nicht den genauen Kontext Ihrer Anforderung.
Wenn Sie cp
auslösen, wird der Vorgang abgeschlossen und zurückgegeben - kehrt nicht zurück, solange er funktioniert.
Ist also die Rendite (mit Erfolgsexit-Code) kein guter Indikator für den Erfolg?
Wie und warum würden Sie teilweise innerhalb einer cp
-Operation aussteigen?
Oder, ist das ein Batch cp
-Skript, das die Liste der Dateien durchläuft ...
etwas Ausarbeitung würde helfen.