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?

Kyle F Hartzenberg
  • 2,567
  • 3
  • 6
  • 24
Haswell
  • 1,573
  • 1
  • 18
  • 45

2 Answers2

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.

Yu Hao
  • 119,891
  • 44
  • 235
  • 294
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
Renato
  • 12,940
  • 3
  • 54
  • 85