[sh] Prüfen ob files heute erstellt wurden

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
smo
Beiträge: 489
Registriert: 19.12.2005 16:34:40
Lizenz eigener Beiträge: MIT Lizenz

[sh] Prüfen ob files heute erstellt wurden

Beitrag von smo » 28.11.2006 14:23:16

Hallo,
ein cronjob soll für mich regelmässig prüfen, ob ca. 10 benötigte Dateien vorhanden und aktuell sind, um dann eine bestimmte Aktion zu starten. Als Kriterium gilt dabei das (Erstell-)Datum der Dateien. Nur wenn alle Dateien am aktuellen Datum erstellt wurden, soll die Bedingung erfüllt sein.

Ein Ansatz war:

Code: Alles auswählen

test 'file1' -nt 'file2'
  echo 'gogogo';
Statt dem 'file2' würde ich hier gern ein Datum angeben, dann wäre ich schon am Ziel. test scheint das leider nicht zu unterstützen.
Wie würdet ihr das elegant und mit möglichst wenig selbstgestricktem Code lösen?

Grüsse
smo

nepos
Beiträge: 5238
Registriert: 05.01.2005 10:08:12

Beitrag von nepos » 28.11.2006 15:11:19

Du könntest eine Referenzdatei mittels touch anlegen, die als Zeitstempel das benötigte Datum hat und diese dann für den Vergleich nutzen.
Ach ja, ein Erstellungsdatum gibt es unter Unix nicht. ctime ist ist die Zeit, zu der sich der Status (Berechtigungen usw.) einer Datei das letzte Mal geändert hat. atime der Zeitpunkt des letzten Zugriffs auf die Datei und mtime die Zeit, zu der die Datei das letzte mal geändert wurde.

smo
Beiträge: 489
Registriert: 19.12.2005 16:34:40
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von smo » 29.11.2006 08:45:21

Hm, den Weg über 'test' mit einer Dummy-Datei bin ich nun doch nicht gegangen. Stattdessen verwende ich 'find':

Code: Alles auswählen

TODAY=`date +%Y-%m-%d`;
FILE[1]="./file1";
FILE[2]="./file2";

if   [ -e ${FILE[1]} ] && [ $TODAY = `find ${FILE[1]} -printf "%TY-%Tm-%Td\n"` ] \
  && [ -e ${FILE[2]} ] && [ $TODAY = `find ${FILE[2]} -printf "%TY-%Tm-%Td\n"` ]
then echo 'gogogo';
Danke und Grüsse
smo

nepos
Beiträge: 5238
Registriert: 05.01.2005 10:08:12

Beitrag von nepos » 29.11.2006 10:35:27

Ok, find ist auch eine Möglichkeit. Je nachdem, was man nun genau braucht ;)

Antworten