Wie benutze ich Shell Script, um die zuletzt geänderte Zeit einer Datei zu überprüfen?

7

Ich möchte herausfinden, ob bestimmte Dateien innerhalb der letzten drei Minuten geändert wurden, um zu entscheiden, ob cp erfolgreich war, und ob ich exit oder das Skript fortsetzen sollte. Wie kann ich das tun?

Danke

    
derrdji 30.07.2009, 14:40
quelle

5 Antworten

17

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:

%Vor%

Dann ist es ziemlich einfach, das in einen Zustand zu versetzen. Zum Beispiel:

%Vor%     
tsg 30.07.2009, 14:57
quelle
4

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.

    
Cascabel 30.07.2009 14:53
quelle
3

Mit dem Befehl stat erhalten Sie die letzte Änderungszeit

%Vor%     
Glen 30.07.2009 14:50
quelle
2

Find kann den Dateinamen ausgeben, wenn er in den letzten 3 Minuten geändert wurde.

%Vor%     
Steve Zobell 24.09.2013 21:29
quelle
0

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.

    
nik 30.07.2009 14:58
quelle

Tags und Links