Recursive file search
Contents
Because Lua has an extremely minimal interface, there is no built-in functions for many tasks. However, the os.execute() function can be used to accomplish nearly anything. In this case, we will use it to recursively search through a directory and its subdirectories to find the full path of a specified file, given its name. Here is my function:
-- Does a recursive search of the directory specified
-- by Root, and returns the full path of the file with
-- the name File, if it is found. Returns nil otherwise.
--
function findFile(Root, File)
local OutputFileName = File..'.fs'
os.execute('dir /S /B "'..Root..
'" | find "'..File..'" > "'..OutputFileName..'"')
local OutputFile = io.open(OutputFileName)
local FullPath = OutputFile:read()
OutputFile:close()
os.remove(OutputFileName)
return FullPath
end
This code is written for Windows. The /S flag makes the command search through subdirectories, and the /B flag makes only the plain file paths printed (and no other info on the file). For Posix, the following command will work:
os.execute('find "'..Root..'" | grep "'..File..'" > "'..OutputFileName..'"')