Zeitstempel von file ermitteln [gelöst]
Zeitstempel von file ermitteln [gelöst]
Hallo,
ich suche für ein Shell-Skript eine Möglichkeit, mit der ich den Zeitstempel einer Datei bestimmen kann (nicht ls -l) um diesen dann zu vergleichen. Da gab es doch einen Befehl zu, meine ich?
Danke.
ich suche für ein Shell-Skript eine Möglichkeit, mit der ich den Zeitstempel einer Datei bestimmen kann (nicht ls -l) um diesen dann zu vergleichen. Da gab es doch einen Befehl zu, meine ich?
Danke.
Zuletzt geändert von Duff am 20.08.2007 10:44:36, insgesamt 1-mal geändert.
Oh, yeah!
vielleicht 'stat':
Gruß
gms
Code: Alles auswählen
root@gms4:~# touch FILENAME
root@gms4:~# stat -c '%y' FILENAME
2007-08-17 12:51:35.000000000 +0200
root@gms4:~# rm FILENAME
gms
deshalb verwende ich gerne Perl als Posix-Layer:
Code: Alles auswählen
root@gms4:~# touch FILENAME
root@gms4:~# perl -e 'print ((stat($ARGV[0]))[9],"\n");' FILENAME
1187349778
root@gms4:~# perl -MPOSIX -e 'print (strftime("%Y-%m-%d %H:%M:%S",localtime((stat($ARGV[0]))[9])),"\n");' FILENAME
2007-08-17 13:22:58
root@gms4:~# rm FILENAME
Mit perl kann ich die aktuelle Zeit ja in Sekunden angeben:
So dass ich dann den file mit
auch in Sekunden ermitteln kann und dann die beiden Zeiten subtrahiere und das Ergebnis muss dann größer als 3600 sec sein.
Aber wie kann ich das print time() in perl unter unix mit date angeben?
Kann keine geeignete Option finden. Sollte doch auch gehen, oder?
Code: Alles auswählen
perl -e 'print time(),"\n";'
Code: Alles auswählen
perl -e 'print ((stat($ARGV[0]))[9],"\n");' file
Aber wie kann ich das print time() in perl unter unix mit date angeben?
Kann keine geeignete Option finden. Sollte doch auch gehen, oder?
Oh, yeah!
Hi,
tut mir leid, aber ich verstehe diese Frage nicht. Willst du den Output deines Perl Einzeilers als Input fuer date nutzen?Duff hat geschrieben:Aber wie kann ich das print time() in perl unter unix mit date angeben?
Roland
"Aber wenn du schon so unwissend bist, davon noch nicht gehört zu haben,
so will ich es doch als gut ansehen, daß du lieber einmal töricht fragst,
als weiterhin nichts von etwas zu wissen, das man doch wissen sollte."
aus "Die Edda des Snorri Sturluson", "Gylfis Täuschung"
"Aber wenn du schon so unwissend bist, davon noch nicht gehört zu haben,
so will ich es doch als gut ansehen, daß du lieber einmal töricht fragst,
als weiterhin nichts von etwas zu wissen, das man doch wissen sollte."
aus "Die Edda des Snorri Sturluson", "Gylfis Täuschung"
wenns dir nur darum geht könnte doch ein oder etwas in der richtung. Alternativ, du hast was von Referenztdatei gesagt den parameter -cnewer
Code: Alles auswählen
find file -ctime | wc -l
Zuletzt geändert von AK-Palme am 17.08.2007 14:57:01, insgesamt 1-mal geändert.
Da ich ein Shell-Skript habe, würde ich gerne date benutzen und nicht Variable=Perleinzeiler.roli hat geschrieben:Hi,tut mir leid, aber ich verstehe diese Frage nicht. Willst du den Output deines Perl Einzeilers als Input fuer date nutzen?Duff hat geschrieben:Aber wie kann ich das print time() in perl unter unix mit date angeben?
Oh, yeah!
habs noch immer nicht geschnallt
wir habe jetzt also eine Datei die 109131 Sekunden alt ist, aber was willst du jetzt mit "date" anfangen. Die 109131 Sekunden sind ja keine Datumsangabe sondern eine Zeitdifferenz
umgerechnet in ein Datum kommt doch nichts vernünftiges raus:
und das korrekte Datum haben wir ja bereits
Gruß
gms
du ermittelst also eine Zeitdifferenz und überprüfst ob diese größer als 3600 sec ist, soweit so gutDuff hat geschrieben: auch in Sekunden ermitteln kann und dann die beiden Zeiten subtrahiere und das Ergebnis muss dann größer als 3600 sec sein.
Code: Alles auswählen
gms1 ~ # touch -m -d "2007-08-16 11:15" file
gms1 ~ # perl -e 'print (time()-(stat($ARGV[0]))[9],"\n");' file
109131
umgerechnet in ein Datum kommt doch nichts vernünftiges raus:
Code: Alles auswählen
gms1 ~ # perl -MPOSIX -e 'print strftime("%Y-%m-%d %H:%M:%S",localtime( 109131 )),"\n";' file
1970-01-02 07:18:51
Code: Alles auswählen
gms1 ~ # perl -MPOSIX -e 'print (strftime("%Y-%m-%d %H:%M:%S",localtime((stat($ARGV[0]))[9])),"\n");' file
2007-08-16 11:15:00
Gruß
gms
-
- Beiträge: 546
- Registriert: 16.12.2004 09:58:27
- Wohnort: Leipzig
Hallo,
was ist denn mit?
Grüße Jörg
was ist denn mit
Code: Alles auswählen
database:~# date +%s -r testdatei
1187366536
Grüße Jörg