2013-10-19 8 views

Antwort

3

In BASH, verwenden Sie diese für Sekunden seit dem letzten Änderung:

expr `date +%s` - `stat -c %Y /home/user/my_file` 
6

Ich weiß, dass der Tag Linux, aber die stat -c Syntax für mich auf OSX nicht funktioniert. Das funktioniert ...

echo $(($(date +%s) - $(stat -f%c myfile.txt))) 

Und als eine Funktion mit dem Dateinamen aufgerufen werden:

lastmod(){ 
    echo "Last modified" $(($(date +%s) - $(stat -f%c "$1"))) "seconds ago" 
} 
+0

Vielleicht funktioniert das unter OS X, aber jetzt gibt '-f% c' einen Fehler. Die Verwendung von 'stat -c% Y" $ 1 "funktioniert. –

+1

@BrentFoust Funktioniert immer noch von mir mit 10.10.5 (und '-c% Y' nicht). Bist du auf El Capitan? – beroe

+0

Nein, 10.10.5 Yosemite –

56

In Linux, date -r file druckt das Datum, wann die Datei zuletzt geändert wurde:

date +%s -r file.txt 

Um die seit der letzten Änderung verstrichenen Sekunden zu drucken, können Sie expr mit dem aktuellen Datum in Sekunden minus dem Datum der letzten Änderung verwenden:

echo $(($(date +%s) - $(date +%s -r file.txt))) 

In Mac OS X (BSD Geschmack von date) dies nicht arbeiten Sie stat wie andere Antworten darauf hingewiesen, verwenden müssen.

+0

Und wenn du es in Millisekunden haben willst:' $ (($ (Datum + '% s% N' -r Datei.txt)/1000000)) ' – Yeti

+0

Wenn Sie den Formatteil als letztes Argument verschieben, funktioniert es auch mit Macs (zumindest mit sierra). 'date -r Datei.txt +% s' und' echo $ (($ (Datum +% s) - $ (Datum -r Datei.txt +% s))) ' – Timo

Verwandte Themen