Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I get last modified timestamp in Lua

I am trying to work on Lua file handling.

So, I am able to open, read, write, close the files.

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

How can I know the last modified date timestamp of this file.

like image 926
Haswell Avatar asked Oct 23 '15 07:10

Haswell


2 Answers

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.

like image 148
Yu Hao Avatar answered Nov 15 '22 10:11

Yu Hao


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
like image 39
Renato Avatar answered Nov 15 '22 09:11

Renato