Walk a directory/Recursively: Difference between revisions

Content added Content deleted
No edit summary
Line 1,309: Line 1,309:
/Users/xxx/music/albumx/trackx2.mp3
/Users/xxx/music/albumx/trackx2.mp3
/Users/xxx/music/albumy/tracky.mp3 ...</pre>
/Users/xxx/music/albumy/tracky.mp3 ...</pre>
=={{header|Lua}}==
Lua provides functions such as os.execute([command]) and io.popen(prog [, mode]). Below an example for Windows users having io.popen at their disposal. Mind you, it may pop-up a command window.
<lang Lua>-- Gets the output of given program as string
-- Note that io.popen is not available on all platforms
local function getOutput(prog)
local file = assert(io.popen(prog, "r"))
local output = assert(file:read("*a"))
file:close()
return output
end

-- Iterates files in given directory
local function files(directory, recursively)
-- Use windows" dir command
local directory = directory:gsub("/", "\\")
local filenames = getOutput(string.format("dir %s %s/B/A:A", directory, recursively and '/S' or ''))
-- Function to be called in "for filename in files(directory)"
return coroutine.wrap(function()
for filename in filenames:gmatch("([^\r\n]+)") do
coroutine.yield(filename)
end
end)
end

-- Walk "C:/Windows" looking for executables
local directory = "C:/Windows"
local pattern = ".*%.exe$" -- for finding executables
for filename in files(directory, true) do
if filename:match(pattern) then
print(filename)
end
end</lang>


=={{header|Mathematica}}==
=={{header|Mathematica}}==