sort und unixtimestamp

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Colttt
Beiträge: 3012
Registriert: 16.10.2008 23:25:34
Wohnort: Brandenburg
Kontaktdaten:

sort und unixtimestamp

Beitrag von Colttt » 05.07.2013 12:54:16

Hallo,

ich hab ein kleines Problem:
hier wird alles korrekt in der richtigen Reihenfolge angezeigt..

Code: Alles auswählen

find /var/cache/zoneminder/events/Chef-1/ -type d -newer /tmp/fru1 ! -newer /tmp/spa1 -printf "%p    %s    %AY-%Am-%Ad %TT \n" |grep /[0-9]| sort  -k4
/var/cache/zoneminder/events/Chef-1/506608    4096    2013-07-05 06:58:16.1185456960
/var/cache/zoneminder/events/Chef-1/506612    12288    2013-07-05 06:58:46.3504426560
/var/cache/zoneminder/events/Chef-1/506613    4096    2013-07-05 06:59:00.8783931550
/var/cache/zoneminder/events/Chef-1/506446    4096    2013-07-05 16:37:08.8563336870
/var/cache/zoneminder/events/Chef-1/506458    4096    2013-07-05 16:39:18.8879150580
/var/cache/zoneminder/events/Chef-1/506460    4096    2013-07-05 16:39:24.5598968000
/var/cache/zoneminder/events/Chef-1/506470    4096    2013-07-05 16:42:11.2953601760
/var/cache/zoneminder/events/Chef-1/506471    4096    2013-07-05 16:42:14.9473484250
/var/cache/zoneminder/events/Chef-1/506475    4096    2013-07-05 16:42:57.1632125860
/var/cache/zoneminder/events/Chef-1/506477    4096    2013-07-05 16:44:16.0509587760
/var/cache/zoneminder/events/Chef-1/506513    4096    2013-07-05 20:21:35.9828987640
/var/cache/zoneminder/events/Chef-1/506514    4096    2013-07-05 20:24:25.2223375660
/var/cache/zoneminder/events/Chef-1/506523    4096    2013-07-05 22:20:39.1463219420
wenn ich das ganze mit unixtimestamp mache leider nicht

Code: Alles auswählen

find /var/cache/zoneminder/events/Chef-1/ -type d -newer /tmp/fru1 ! -newer /tmp/spa1 -printf "%C@ %p \n" |grep /[0-9]| sort -k1
1372343828.8563336870 /var/cache/zoneminder/events/Chef-1/506446
1372343958.8879150580 /var/cache/zoneminder/events/Chef-1/506458
1372343964.5598968000 /var/cache/zoneminder/events/Chef-1/506460
1372344131.2953601760 /var/cache/zoneminder/events/Chef-1/506470
1372344134.9473484250 /var/cache/zoneminder/events/Chef-1/506471
1372344177.1632125860 /var/cache/zoneminder/events/Chef-1/506475
1372344256.0509587760 /var/cache/zoneminder/events/Chef-1/506477
1372357295.9828987640 /var/cache/zoneminder/events/Chef-1/506513
1372357465.2223375660 /var/cache/zoneminder/events/Chef-1/506514
1372364439.1463219420 /var/cache/zoneminder/events/Chef-1/506523
1372395496.1185456960 /var/cache/zoneminder/events/Chef-1/506608
1372395526.3504426560 /var/cache/zoneminder/events/Chef-1/506612
1372395540.8783931550 /var/cache/zoneminder/events/Chef-1/506613
anhand der ordnernamen kann man gut sehen das da irgendwie etwas nicht stimmt..
auch wenn ich %A@ bei printf nutze, ist die sortierung zwar anders aber immer noch nicht korrekt.. evtl jmd eine idee?
Debian-Nutzer :D

ZABBIX Certified Specialist

uname
Beiträge: 12405
Registriert: 03.06.2008 09:33:02

Re: sort und unixtimestamp

Beitrag von uname » 05.07.2013 13:04:24

Ich betrachte mal nur zwei Zeilen:

Code: Alles auswählen

/var/cache/zoneminder/events/Chef-1/506608    4096    2013-07-05 06:58:16.1185456960
/var/cache/zoneminder/events/Chef-1/506446    4096    2013-07-05 16:37:08.8563336870

Code: Alles auswählen

1372343828.8563336870 /var/cache/zoneminder/events/Chef-1/506446
1372395496.1185456960 /var/cache/zoneminder/events/Chef-1/506608
Ich würde mal sagen die Sortierung (sort) ist jeweils korrekt und aufsteigend. Bei dem Datumsformat wäre ich mir aber nicht sicher. Versuche mal das Datum wieder zurückzurechnen oder vielleicht nutzt du ja auch verschiedene Zeitstempel (Befehl stat). Ich kenne die ganzen Parameter nicht, die du nutzt.

Colttt
Beiträge: 3012
Registriert: 16.10.2008 23:25:34
Wohnort: Brandenburg
Kontaktdaten:

Re: sort und unixtimestamp

Beitrag von Colttt » 05.07.2013 13:24:24

Hallo uname, die parameter stehen doch alle da?! in der ersten zeile, oder was meinst du?
hier mal die stat ausgaben von den beiden:

Code: Alles auswählen

stat /var/cache/zoneminder/events/Chef-1/506608
  Datei: »/var/cache/zoneminder/events/Chef-1/506608â
  GröÃe: 4096          Blöcke: 8          EA Block: 4096   Verzeichnis
Gerät: fc00h/64512d    Inode: 2269340     Verknüpfungen: 2
Zugriff: (0755/drwxr-xr-x)  Uid: (   33/www-data)   Gid: (   33/www-data)
Zugriff    : 2013-07-05 10:04:10.505757049 +0200
Modifiziert: 2013-06-28 06:58:16.118545696 +0200
Geändert   : 2013-06-28 06:58:16.118545696 +0200
 Geburt    : -
stat /var/cache/zoneminder/events/Chef-1/506446
  Datei: »/var/cache/zoneminder/events/Chef-1/506446â
  GröÃe: 4096          Blöcke: 8          EA Block: 4096   Verzeichnis
Gerät: fc00h/64512d    Inode: 2719778     Verknüpfungen: 2
Zugriff: (0755/drwxr-xr-x)  Uid: (   33/www-data)   Gid: (   33/www-data)
Zugriff    : 2013-07-05 10:04:10.625756633 +0200
Modifiziert: 2013-06-27 16:37:08.856333687 +0200
Geändert   : 2013-06-27 16:37:08.856333687 +0200
 Geburt    : -
Debian-Nutzer :D

ZABBIX Certified Specialist

cosmac
Beiträge: 4576
Registriert: 28.03.2005 22:24:30

Re: sort und unixtimestamp

Beitrag von cosmac » 05.07.2013 13:46:14

hi,

mir scheint, du benutzt mtime, ctime und atime ein wenig wahllos. Im ersten Beispiel -printf "%p %s %AY-%Am-%Ad %TT \n" wird das Datum des letzten Zugriffs (atime) mit der Zeit der letzten Änderung (mtime) kombiniert. Das ist wohl nicht so gemeint. Im zweiten Beispiel benutzt du mit %C die ctime, damit ist das Ergebnis natürlich anders als im ersten Fall -- die Sortierung oder Formatierung ist dabei nicht das Problem.

In der Regel möchte man die mtime verwenden, das ist die Zeit, die "ls" ohne Optionen anzeigt.
Beware of programmers who carry screwdrivers.

Colttt
Beiträge: 3012
Registriert: 16.10.2008 23:25:34
Wohnort: Brandenburg
Kontaktdaten:

Re: sort und unixtimestamp

Beitrag von Colttt » 05.07.2013 14:56:40

das müsste dann T sein, richtig?? aber das geht auch nicht

Code: Alles auswählen

 find /var/cache/zoneminder/events/Chef-1/ -type d -newer /tmp/fru1 ! -newer /tmp/spa1 -printf "%T@ %p \n" |grep /[0-9]| sort -k1
1372343828.8563336870 /var/cache/zoneminder/events/Chef-1/506446
1372343958.8879150580 /var/cache/zoneminder/events/Chef-1/506458
1372343964.5598968000 /var/cache/zoneminder/events/Chef-1/506460
1372344131.2953601760 /var/cache/zoneminder/events/Chef-1/506470
1372344134.9473484250 /var/cache/zoneminder/events/Chef-1/506471
1372344177.1632125860 /var/cache/zoneminder/events/Chef-1/506475
1372344256.0509587760 /var/cache/zoneminder/events/Chef-1/506477
1372357295.9828987640 /var/cache/zoneminder/events/Chef-1/506513
1372357465.2223375660 /var/cache/zoneminder/events/Chef-1/506514
1372364439.1463219420 /var/cache/zoneminder/events/Chef-1/506523
1372395496.1185456960 /var/cache/zoneminder/events/Chef-1/506608
1372395526.3504426560 /var/cache/zoneminder/events/Chef-1/506612
1372395540.8783931550 /var/cache/zoneminder/events/Chef-1/506613
Debian-Nutzer :D

ZABBIX Certified Specialist

cosmac
Beiträge: 4576
Registriert: 28.03.2005 22:24:30

Re: sort und unixtimestamp

Beitrag von cosmac » 05.07.2013 16:06:42

wenn das letzte Beispiel wirklich falsch sein sollte, wird ein einfaches sort wohl nicht reichen. Die sind doch jetzt nach Unix-Zeit, nach Datum und nach Verzeichnisname aufsteigend sortiert. Wie sollten sie denn sortiert sein?

Ich hab' mal mit date -d@$1 '+f%F %T' ein menschenlesbares Datum angehängt. Man achte auf den Tag in den letzten 3 Zeilen:

Code: Alles auswählen

1372343828.8563336870 /var/cache/zoneminder/events/Chef-1/506446 2013-06-27 16:37:08
1372343958.8879150580 /var/cache/zoneminder/events/Chef-1/506458 2013-06-27 16:39:18
1372343964.5598968000 /var/cache/zoneminder/events/Chef-1/506460 2013-06-27 16:39:24
1372344131.2953601760 /var/cache/zoneminder/events/Chef-1/506470 2013-06-27 16:42:11
1372344134.9473484250 /var/cache/zoneminder/events/Chef-1/506471 2013-06-27 16:42:14
1372344177.1632125860 /var/cache/zoneminder/events/Chef-1/506475 2013-06-27 16:42:57
1372344256.0509587760 /var/cache/zoneminder/events/Chef-1/506477 2013-06-27 16:44:16
1372357295.9828987640 /var/cache/zoneminder/events/Chef-1/506513 2013-06-27 20:21:35
1372357465.2223375660 /var/cache/zoneminder/events/Chef-1/506514 2013-06-27 20:24:25
1372364439.1463219420 /var/cache/zoneminder/events/Chef-1/506523 2013-06-27 22:20:39
1372395496.1185456960 /var/cache/zoneminder/events/Chef-1/506608 2013-06-28 06:58:16
1372395526.3504426560 /var/cache/zoneminder/events/Chef-1/506612 2013-06-28 06:58:46
1372395540.8783931550 /var/cache/zoneminder/events/Chef-1/506613 2013-06-28 06:59:00
Beware of programmers who carry screwdrivers.

Colttt
Beiträge: 3012
Registriert: 16.10.2008 23:25:34
Wohnort: Brandenburg
Kontaktdaten:

Re: sort und unixtimestamp

Beitrag von Colttt » 05.07.2013 16:20:55

hi cosmac,

danke für die info.. hab ebend grade selbst den Fehler entdeckt..
es müsste richtig heissen:
find /var/cache/zoneminder/events/Chef-1/ -type d -newer /tmp/fru1 ! -newer /tmp/spa1 -printf "%p %s %TY-%Tm-%Td %TT \n" |grep /[0-9]| sort -k4
(man achte auf die roten T)
und dann ist die Ausgabe auch korrekt:
find /var/cache/zoneminder/events/Chef-1/ -type d -newer /tmp/fru1 ! -newer /tmp/spa1 -printf "%T@ %p \n" |grep /[0-9]| sort -k1

soo meine scripte wurden angepasst :D
Debian-Nutzer :D

ZABBIX Certified Specialist

Antworten