2017-01-06 1 views
0

Ich versuche, eine Datei (für Referenzierungsdatum) mit einem zukünftigen Datum zu berühren - Aktuelles Datum - $ date Fr Jan 6 03:59:55 EST 2017Perl Touch -t Dateifehler für ein zukünftiges Datum

touch -t 201702032359.59 /var/tmp/ME_FILE_END 

auf die Überprüfung der Zeitstempel der Datei als -

$ ls -lrt /var/tmp/ME_FILE_END 

eine Ausgabe mit nur Datum bekommen und nicht die gesamte Zeitstempel (hhmm.sec)

-rw-r--r-- 1 abcproc abc 0 Feb 3 2017 /var/tmp/ME_FILE_END 
012 mit ist

Aber für ein Datum kleiner oder gleich dem Strom es richtige Ergebnis gibt -

touch -t 201612010000.00 /var/tmp/ME_FILE_START 
ls -lrt /var/tmp/ME_FILE_START 
-rw-r--r-- 1 abcproc abc 0 Dec 1 00:00 /var/tmp/ME_FILE_START 

Kann jemand bitte vorschlagen, warum diese Diskrepanz?

+0

Wie Perl beteiligt? – choroba

+0

Nirgendwo denke ich. Es ist nur eine einfache Unix-Frage. –

+1

Versuchen Sie, eine Datei vor> 6 Monaten zu berühren. Sie werden dieses Problem auch sehen. 'ls'-Formate sind etwas, das bequem vom Menschen lesbar ist. Dies ist ein weiterer Grund, warum Sie keine 'ls'-Ausgabe parsen sollten. – Sobrique

Antwort

1

Es ist nur die Art, wie ls das Datum anzeigt. In der Zwischenzeit wird die Änderungszeit nicht angezeigt.

Wenn Sie Details bezüglich der letzten Zugriffs-/Änderungs-/Änderungszeit benötigen, sollten Sie stat verwenden.

stat /var/tmp/ME_FILE_END 

Sie werden die erwartete Ausgabe sehen.

Zum Beispiel:

[10:29:41][email protected]:~$ touch -t 201702032359.59 /var/tmp/ME_FILE_END 
[10:29:43][email protected]:~$ ls -ltr /var/tmp/ME_FILE_END 
-rw-rw-r-- 1 dabi dabi 0 feb. 3 2017 /var/tmp/ME_FILE_END 
[10:29:47][email protected]:~$ stat /var/tmp/ME_FILE_END 
    File : '/var/tmp/ME_FILE_END' 
    Size : 0   Blocks : 0   I/O blocks : 4096 empty file 
Device : 803h/2051d  Inode : 5374373  Links : 1 
Access : (0664/-rw-rw-r--) UID : (1000/ dabi) GID : (1000/ dabi) 
Access : 2017-02-03 23:59:59.000000000 +0100 
Change : 2017-02-03 23:59:59.000000000 +0100 
Change : 2017-01-06 10:29:43.364630503 +0100 
    Birth : - 
+0

Das ist ein weiterer Grund, warum Sie 'ls' nicht ausgeben sollten :). – Sobrique

+0

In der Tat. Dies ist definitiv ein menschliches Werkzeug. –

Verwandte Themen