How can I get last modified timestamp in Lua
Asked Answered
A

2

8

I am trying to work on Lua file handling. I am able to open (read), write and close the file via:

local session_debug = io.open("/root/session_debug.txt", "a")
session_debug:write("Some text\n")
session_debug:close()

How can I find the timestamp of when the file was last modified?

Arrowood answered 23/10, 2015 at 7:21 Comment(0)
C
10

There's no built-in function in standard Lua that does this. One way to get it without third-party libraries is to take use of io.popen.

For example, on Linux, you could use stat:

local f = io.popen("stat -c %Y testfile")
local last_modified = f:read()

Now last_modified is the timestamp of the last modified time of testfile. On my system,

print(os.date("%c", last_modified))

Outputs Sat Mar 22 08:36:50 2014.

Croteau answered 23/10, 2015 at 8:10 Comment(3)
In *BSD, including Mac OS X, it's stat -f %m.Recumbent
If you want the date as a string, use stat -c %y in POSIX.Recumbent
Is there an alternative to stat on windows?Pony
A
4

If you don't mind using a library, LuaFileSystem allows you to get the modified timestamp as follows:

local t = lfs.attributes(path, 'modification')

A more elaborate example with error handling (will print the name and date of modification of the first argument passed to the script):

local lfs = require('lfs')
local time, err = lfs.attributes(arg[1], 'modification')
if err then
    print(err)
else
    print(arg[1], os.date("%c", time))
end
Aquileia answered 22/2, 2020 at 13:53 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.